使用numpy读取二进制数据

时间:2018-03-09 06:30:05

标签: python numpy

我有一个二进制文件,我想知道如何使用numpy来阅读它。数据格式为string的10个字符,后跟100 floats(每个使用4个字符存储)。我知道以下带有struct模块的代码片段可以解决这个问题,但对于大型文件,结构代码太耗时。

f = open(file, 'rb')
while True:
    tag = f.read(10)
    if tag== '': break
    b = []
    for i in range(100):
      b.append(struct.unpack('f', f.read(4)))
    yield tag, b

我对numpy.fromfile有点困惑,看来这可以满足我的要求。

1 个答案:

答案 0 :(得分:1)

fromfile获取一个打开的文件对象。没有测试文件,我只会编写一些代码而不进行测试:

f = open('test', 'rb')
arr1 = np.fromfile(f, dtype='S1', count=10)
arr2 = np.fromfile(f, dtype='f4')  # count=100 optional
f.close()

单词 - 打开文件,读取字符串部分,然后读取浮动部分。

如果它是重复模式,它应该可以将该代码放在循环中。然后,我会在列表中收集arg1arg2个部分,并在最后连接。