0

私が基本的にやろうとしているのは、いくつかの 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 です。

4

2 に答える 2