我正在尝试将matlab脚本转换为python。该脚本读取一个二进制文件并将其重新整形为多个列。matlab脚本是:
fid=fopen(binary_file,'rb');
[inpar,ic]=fread(fid,4,'int');
if (ic<4) ; idata=[];return;end
nmagic=inpar(1);
nh=inpar(2);
nrpar=inpar(3);
nipar=inpar(4);
[rdata,ic]=fread(binary_file,[nh,nrpar],'float');
if (ic<nh*nrpar) ; return;end
[idata,ic]=fread(fid,[nh,nipar],'int');
if (ic<nh*nipar) ; return;end
我尝试的python代码是:
import numpy as np
inpar = np.fromfile(fid, dtype=np.int32)
nmagic, nh, nrpar, nipar = inpar
rdata = np.fromfile(fid, dtype=np.float32, count=nh * nrpar).reshape(nh, nrpar)
idata = np.fromfile(fid, dtype=np.int32, count=nh * nipar).reshape(nh, nipar)
我不知道Matlab是如何重塑数据的。谁能帮我翻译代码,在Python中实现相同的结果。这里给出了一个样本数据
1条答案
按热度按时间z6psavjg1#
让我们尝试读取数据与
open
在rb
模,所以它将被读取在二进制模式。然后我们将使用np.fromfile
从文件中读取。