2011-12-16 13 views
5

Estoy tratando de recuperar los títulos de las columnas de una recarray y tener problemas considerables. Si leo en un archivo CSV usando la función csv2rec de pylab, soy capaz de acceder a títulos de las columnas de la siguiente manera:Obtener recarray atributos/columnas python

from pylab import csv2rec 
x = csv2rec(file.csv) 
x.column1 
x.column2 

Dónde column1 'es el título de la primera columna, y se volvería el resto de los valores en la columna. Pero, estoy leyendo en un archivo .csv en el que no sé cuáles son todos los valores de los títulos de las columnas, y quiero poder acceder a ellos (ya sea mediante un bucle o estableciendo una lista). Esto parece que debería ser simple. ¿Algunas ideas?

Respuesta

7

Puede utilizar x.dtype.names:

>>> import numpy as np 

>>> a = np.array([0.1,0.2]) 
>>> b = np.array([0.3,0.4]) 
>>> dtype = {'names' : ['a','b'], 'formats' : ['f8', 'f8']} 
>>> c = np.rec.fromarrays([a,b], dtype = dtype) 
>>> c 
rec.array([(0.1, 0.3), (0.2, 0.4)], 
     dtype=[('a', '<f8'), ('b', '<f8')]) 
>>> print c.dtype.names 
('a', 'b') 

O, usando el ejemplo:

[[email protected] ~/calc ]$ cat csv.dat 
a,b 
0.1,0.3 
0.2,0.4 

In [1]: from pylab import csv2rec 

In [2]: x = csv2rec('csv.dat') 

In [3]: for name in x.dtype.names: 
    ...:   print name 
a 
b