Программное добавление имен столбцов в numpy ndarray

Я пытаюсь добавить имена столбцов в numpy ndarray, а затем выбрать столбцы по их именам. Но это не работает. Я не могу сказать, возникает ли проблема, когда я добавляю имена или позже, когда я пытаюсь их вызвать.

Вот мой код.

data = np.genfromtxt(csv_file, delimiter=',', dtype=np.float, skip_header=1)

#Add headers
csv_names = [ s.strip('"') for s in file(csv_file,'r').readline().strip().split(',')]
data = data.astype(np.dtype( [(n, 'float64') for n in csv_names] ))

Диагностика на основе измерений соответствует моим ожиданиям:

print len(csv_names)
>> 108
print data.shape
>> (1652, 108)

"print data.dtype.names" также возвращает ожидаемый результат.

Но когда я начинаю называть столбцы по именам их полей, происходят странные вещи. «Столбец» по-прежнему представляет собой массив со 108 столбцами...

print data["EDUC"].shape
>> (1652, 108)

... и, похоже, он содержит больше пропущенных значений, чем строк в наборе данных.

print np.sum(np.isnan(data["EDUC"]))
>> 27976

Есть идеи, что здесь происходит? Добавление заголовков должно быть тривиальной операцией, но я часами боролся с этой ошибкой. Помощь!

13
задан Saullo G. P. Castro 12 May 2013 в 21:44
поделиться