我想用一个numpy.fromfile
调用读取二进制文件中的不同块。每个块的格式如下:
OES=[
('EKEY','i4',1),
('FD1','f4',1),
('EX1','f4',1),
('EY1','f4',1),
('EXY1','f4',1),
('EA1','f4',1),
('EMJRP1','f4',1),
('EMNRP1','f4',1),
('EMAX1','f4',1),
('FD2','f4',1),
('EX2','f4',1),
('EY2','f4',1),
('EXY2','f4',1),
('EA2','f4',1),
('EMJRP2','f4',1),
('EMNRP2','f4',1),
('EMAX2','f4',1)]
以下是二进制文件的格式:
^{pr2}$我知道我想要的数据和无用数据之间的字节增量。我也知道我想要的每个数据块的大小。在
到目前为止,我通过在文件对象f
上搜索,然后调用:
nparr = np.fromfile(f,dtype=OES,count=size)
因此,对于我想要的每个数据块,我有一个不同的nparr
,并将所有numpy
数组连接到一个新数组中。在
我的目标是拥有一个包含我想要的所有块的单个数组,而无需连接(出于内存目的)。也就是说,我只想调用nparr = np.fromfile(f,dtype=OES)
一次。有没有办法实现这个目标?在
不,不需要调用
fromfile()
。在但如果您事先知道文件的完整布局,则可以预先分配数组,然后使用}将OES块直接读入预分配的数组中。例如,假设您知道每个OES块的文件位置,并且知道每个块中的记录数。也就是说,你知道:
fromfile
和{然后您可以这样做(假设
^{pr2}$f
是已经打开的文件):相关问题 更多 >
编程相关推荐