genfromtxt - 强制生成未知列数的列名

时间:2014-01-10 10:46:03

标签: python numpy

我无法加载表格数据并自动生成列名。这似乎很简单,但我无法指出它。

如果我知道列数我可以轻松创建names参数,但我没有这方面的知识,我想避免事先对数据文件进行内省。

当我不知道文件中有多少列时,如何强制numpy生成列名,或者自动使用tuple - 如dtype?我想在读取数据后操纵列名。

到目前为止我的方法:

data = np.genfromtxt(tar_member, unpack = True, names = '') - 我想强制通过提供一些“空”参数来自动生成列名。错误ValueError: size of tuple must match number of fields.

的结果

data = np.genfromtxt(tar_member, unpack = True, names = True) - “工作”但消耗第一行数据。

data = np.genfromtxt(tar_member, unpack = True, dtype = None) - 适用于混合类型的数据。自动类型猜测将dtype扩展为元组,并分配名称。但是,对于实际上float的所有内容的数据,dtype设置为float64,当我尝试访问ValueError: there are no fields defined时,我获得了data.dtype.names

1 个答案:

答案 0 :(得分:0)

我知道有一种更简洁的方法可以做到这一点,但如果您不介意强制解决问题,可以生成dtype结构并将其直接分配给数据数组。

x = numpy.random.rand(10,10)
numpy.savetxt('test.out', x, delimiter=',')
dataa = numpy.genfromtxt('test.out',delimiter=",", dtype=None)
if dataa.dtype.names is None:#then dataa is homogenous?
  l1 = map(lambda z:('f%d'%(z),dataa.dtype),range(0,dataa.shape[1]))
  dataa.dtype = dtype(l1)

dataa.dtype
dataa.dtype.names