Python Numpy DTYPE动态数组

时间:2017-11-24 19:14:15

标签: python numpy

我有这样的代码

np.fromfile( f,
             dtype = np.dtype( [ ( 'f1', np.float16 ),
                                 ( 'f2', np.float16 )
                                 ]
                               ), 
             count = -1
             )

我需要依赖变量 dtype (而不是size=2 make size=var)。

试图谷歌并试图询问IRC,但没有救援。提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果单个dtypes相同,并且您对名称不挑剔,则此dtype格式易于使用和概括:     在[358]中:dt = np.dtype(' f,f,f')     在[359]中:dt     出[359]:dtype([(' f0','

或者使用常见的字符串连接:

In [360]: dt = np.dtype(','.join(['f']*3))
In [361]: np.ones((3,), dtype=dt)
Out[361]: 
array([( 1.,  1.,  1.), ( 1.,  1.,  1.), ( 1.,  1.,  1.)],
      dtype=[('f0', '<f4'), ('f1', '<f4'), ('f2', '<f4')])

或使用list zip

In [364]: dt = [('foo%s'%n, fmt) for n,fmt in zip(range(3),'ifd')]
In [365]: dt
Out[365]: [('foo0', 'i'), ('foo1', 'f'), ('foo2', 'd')]
In [366]: np.ones(2, dtype=dt)
Out[366]: 
array([(1,  1.,  1.), (1,  1.,  1.)],
      dtype=[('foo0', '<i4'), ('foo1', '<f4'), ('foo2', '<f8')])