如果所有相同类型的列(例如Float),dtype
可能只为所有列定义一次?
示例:
inarray = numpy.array([(1.54, 1111.01, 45.12,... n),
(2.34, 2222.22, 11.23,... n),
(5.34, 18.22, 11.11,...n)],
numpy.dtype([('column_name','<f8')])
我们还想知道是否可以自动生成列名?
numpy.dtype([('????','<f8')])
答案 0 :(得分:2)
此示例通过创建字符串生成4个字段:'<f8,<f8,<f8,<f8'
:
In [126]: np.zeros((3,),np.dtype(','.join(['<f8']*4)))
Out[126]:
array([(0.0, 0.0, 0.0, 0.0), (0.0, 0.0, 0.0, 0.0), (0.0, 0.0, 0.0, 0.0)],
dtype=[('f0', '<f8'), ('f1', '<f8'), ('f2', '<f8'), ('f3', '<f8')])
可能有一种使用列表和元组构造它的方法,但是这个字符串版本很容易理解和构建。
一些替代方案:
np.dtype([('field_%d'%i, '<f8') for i in range(4)])
np.dtype({'formats':['f8']*4, 'names':['f%s'%i for i in range(4)]})
np.format_parser(['f8']*4,[],[]).dtype # auto generate names
答案 1 :(得分:1)
我解决了问题...
input_array = [(1.1, 11.2, 1111.0, ...n),
(1.3, 2.4, 2222.22, ...n)]
columns_count = len(input_array[0])
lists = [('','<f8')] * columns_count
inarray = numpy.array(input_array,
numpy.dtype(lists))