如何使用numpy读取二进制文件的一部分?

问题描述

您可以按正常方式对文件对象使用seek,然后在中使用此文件对象fromfile。这是一个完整的示例:

import numpy as np
import os

data = np.arange(100, dtype=np.int)
data.tofile("temp")  # save the data

f = open("temp", "rb")  # reopen the file
f.seek(256, os.SEEK_SET)  # seek

x = np.fromfile(f, dtype=np.int)  # read the data into numpy
print x 
# [64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
# 89 90 91 92 93 94 95 96 97 98 99]

解决方法

我正在将matlab脚本转换为numpy,但是从二进制文件读取数据时遇到一些问题。用于跳过文件开头fseek时是否有等价fromfile之处?这是我需要做的提取类型:

fid = fopen(fname);
fseek(fid,8,'bof');
second = fread(fid,1,'schar');
fseek(fid,100,'bof');
total_cycles = fread(fid,'uint32','l');
start_cycle = fread(fid,'l');

谢谢!