Ajouter par programmation des noms de colonne de numpy ndarray

Je suis en train d'ajouter les noms de colonne à un numpy ndarray, puis sélectionnez les colonnes par leur nom. Mais ça ne fonctionne pas. Je ne peux pas dire si le problème survient lorsque j'ajoute les noms, ou plus tard, quand j'essaie de les appeler.

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

Dimension de diagnostic correspondre à ce que j'attends:

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

"données d'impression.dtype.les noms" renvoie également la sortie attendue.

Mais quand j'ai commencer à appeler les colonnes par leurs noms de champ, tordu les choses se passent. La "colonne" est encore un tableau avec 108 colonnes...

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

... et il semble contenir plus de valeurs manquantes qu'il y a de lignes dans le jeu de données.

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

Aucune idée de ce qui va mal ici? Ajouter des en-têtes doit être une opération triviale, mais j'ai été la lutte contre ce bug pendant des heures. À l'aide!

OriginalL'auteur Abe | 2012-05-24