我基本上想做的是从一些 MATLAB 代码转换为 Python:
MATLAB 代码:
for time = 100:model_times
for i = 1:5
indat = fread(fid,[48,40],'real*4');
vort(:,:,i,time) = indat';
end
end
fid 保存正在使用的文件路径(一个 DAT 文件)。vort 预先分配为:vort = zeros(40,48,5,model_times)。model_times 是一个固定整数(例如 100)。
似乎正在发生的事情是 .dat 文件数据作为 48x40 矩阵被读入,然后以固定的 i 和时间(循环计数器)插入到预分配的数组 vort 中。
我在 Python 中尝试过这个:
for time in range(model_times):
for i in range(5):
vort[:,:,i,time] = np.fromfile(fid,np.float64)
我收到一条错误消息,提示“ValueError:操作数无法与形状 (40,48) (6048000) 一起广播”。错误发生在上面 Python 代码的最后一行。我还尝试将 .reshape((40,48,5,model_times)) 添加到出现错误的行,但收到另一个错误,显示“ValueError:新数组的总大小必须保持不变”。
所以我的问题是,可以处理多维数组的与 MATLAB 的“fread”等价的 Python 是什么?
在从 1 到 10 的范围内,1 是初学者,10 是经验丰富的老手,我大约是 4。