Fügen Sie programmgesteuert Spaltennamen zu numpy ndarray hinzu

Ich versuche, einem numpy ndarray Spaltennamen hinzuzufügen und dann Spalten anhand ihrer Namen auszuwählen. Aber es geht nicht. Ich kann nicht feststellen, ob das Problem auftritt, wenn ich die Namen hinzufüge oder später, wenn ich versuche, sie anzurufen.

Hier ist mein Code.

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] ))

Die dimensionsbasierte Diagnose entspricht meinen Erwartungen:

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

"print data.dtype.names" gibt auch die erwartete Ausgabe zurück.

Aber wenn ich anfange, Spalten nach ihren Feldnamen aufzurufen, passieren verrückte Dinge. Die "Spalte" ist immer noch ein Array mit 108 Spalten ...

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

... und es scheint mehr fehlende Werte zu enthalten, als Zeilen im Datensatz enthalten sind.

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

Irgendeine Idee, was hier falsch läuft? Das Hinzufügen von Headern sollte ein trivialer Vorgang sein, aber ich habe diesen Fehler stundenlang bekämpft. Hilfe!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage