我无法加载表格数据并自动生成列名。这似乎很简单,但我无法指出它。
如果我知道列数我可以轻松创建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
。
答案 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