Я пытаюсь добавить имена столбцов в 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
Любая идея, что здесь происходит не так? Добавление заголовков должно быть тривиальной операцией, но я борюсь с этой ошибкой в течение нескольких часов. Помогите!