4

我正在尝试通过传入用户定义的数据类型numpy.fromfile来读取结构化数组(文件头)。出于某种原因,我的结构化数组元素以二维数组而不是平面一维数组的形式返回:

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以便将它们读取为平面一维数组?

4

1 回答 1

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

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

于 2013-06-07T17:52:47.987 回答