我有一个二进制文件,我想知道如何使用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
有点困惑,看来这可以满足我的要求。
答案 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()
单词 - 打开文件,读取字符串部分,然后读取浮动部分。
如果它是重复模式,它应该可以将该代码放在循环中。然后,我会在列表中收集arg1
和arg2
个部分,并在最后连接。