Programaticamente adicionar nomes de coluna para ndarray numpy

Eu estou tentando adicionar nomes de coluna a um ndarray numpy e, em seguida, selecione colunas por seus nomes. Mas isso não funciona. Eu não posso dizer se o problema ocorre quando eu adiciono os nomes, ou mais tarde, quando tento chamá-los.

Aqui está meu código.

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

Diagnósticos baseados em dimensões correspondem ao que eu esperava:

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

"print data.dtype.names" também retorna a saída esperada.

Mas quando eu começo a chamar colunas pelos nomes de campo, coisas malucas acontecem. A "coluna" ainda é uma matriz com 108 colunas ...

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

... e parece conter mais valores ausentes do que linhas no conjunto de dados.

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

Alguma ideia do que está errado aqui? Adicionar cabeçalhos deve ser uma operação trivial, mas tenho lutado contra esse bug por horas. Socorro!

questionAnswers(2)

yourAnswerToTheQuestion