这是我写的代码。 'guteliste25.txt'包含一个带有标题的数据表,其中指定了列的名称。
import numpy as np
d = 'guteliste25.txt'
CNS = np.genfromtxt(d, dtype = None, names = True)
dt = np.dtype([('R','<f8')])
test = np.ones(len(CNS),dtype=dt)
klaus = np.concatenate((CNS,test), axis=1)
它在最后一行吐出的错误是: TypeError:期望一个可读的缓冲区对象
我认为np.genfromtxt和它的不同行格式一定存在问题。
我只想为每一行添加一个值,即总共一列,并为其命名,以便我可以通过以下方式轻松访问:CNS ['R']
答案 0 :(得分:0)
最好从头开始创建一个结构化数组并填充它:
这两个例子以:
开头import numpy as np
from numpy.lib import recfunctions
ints = np.ones(5,dtype=np.int)
floats = np.ones(5,dtype=np.float)
strings = np.array(['A']*5)
创建一个空的结构化数组,然后用值填充它:
out=np.empty(5,dtype=[('ints', '>i4'), ('floats', '>f8'), ('strings', '|S4')])
out['ints']=ints
out['floats']=floats
out['strings']=strings
print out
[(1, 1.0, 'A') (1, 1.0, 'A') (1, 1.0, 'A') (1, 1.0, 'A') (1, 1.0, 'A')]
print out.dtype
[('ints', '>i4'), ('floats', '>f8'), ('strings', 'S4')]
将数据附加到当前数组:
out=np.lib.recfunctions.append_fields(ints,['floats','strings'],[floats,strings])
print out
[(1, 1.0, 'A') (1, 1.0, 'A') (1, 1.0, 'A') (1, 1.0, 'A') (1, 1.0, 'A')]
print out.dtype #note the name applied to the first array
[('f0', '>i4'), ('floats', '>f8'), ('strings', 'S4')]
我强烈建议python pandas处理结构化数组。