私が基本的にやろうとしているのは、いくつかの 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 行列として読み込まれ、事前に割り当てられた配列 vort に固定の i と時間 (ループ カウンター) で挿入されていることです。
私は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 です。