Agregue programáticamente los nombres de columna a ndarray numpy

Estoy tratando de agregar nombres de columna a una ndarray numpy, luego seleccionar columnas por sus nombres. Pero no funciona. No puedo saber si el problema se produce cuando agrego los nombres o, más tarde, cuando intento llamarlos.

Aquí está mi 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] ))

Los diagnósticos basados ​​en dimensiones coinciden con lo que espero:

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

"print data.dtype.names" también devuelve el resultado esperado.

Pero cuando empiezo a llamar columnas por sus nombres de campo, suceden cosas jodidas. La "columna" sigue siendo una matriz con 108 columnas ...

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

... y parece que contiene más valores perdidos que filas en el conjunto de datos.

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

¿Alguna idea de lo que está pasando aquí? Agregar encabezados debería ser una operación trivial, pero he estado luchando contra este error durante horas. ¡Ayuda!

Respuestas a la pregunta(2)

Su respuesta a la pregunta