numpy fromfile和结构化数组

时间:2013-06-07 13:58:54

标签: python numpy structured-array

我正在尝试使用numpy.fromfile通过传入structured array来阅读user defined data-type(文件标题)。出于某种原因,我的结构化数组元素将作为二维数组而不是平面一维数组返回:

headerfmt='20i,20f,a80'
dt = np.dtype(headerfmt)
header = np.fromfile(fobj,dtype=dt,count=1)
ints,floats,chars = header['f0'][0], header['f1'][0], header['f2'][0]
#                                ^?               ^?               ^?

如何修改headerfmt以便将它们作为平面1D数组读取?

1 个答案:

答案 0 :(得分:2)

如果count始终为1,请执行以下操作:

header = np.fromfile(fobj, dtype=dt, count=1)[0]

您仍然可以按字段名称编制索引,但数组的repr不会显示字段名称。

例如:

import numpy as np

headerfmt='20i,20f,a80'
dt = np.dtype(headerfmt)

# Note the 0-index!
x = np.zeros(1, dtype=dt)[0]

print x['f0'], x['f1'], x['f2']
ints, floats, chars = x

它可能适合您的目的,也可能不适合您,但无论如何它都很简单。