我有这样的代码
np.fromfile( f,
dtype = np.dtype( [ ( 'f1', np.float16 ),
( 'f2', np.float16 )
]
),
count = -1
)
我需要依赖变量 dtype
(而不是size=2
make size=var
)。
试图谷歌并试图询问IRC,但没有救援。提前谢谢!
答案 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')])