2011-10-07 10 views
14

私はいくつかの数学的計算を行うために非常に多くのFortranライブラリを使用しています。したがって、numpyのすべての配列はである必要があります。Fortran-contiguous
現在、私はnumpy.asfortranarray()でこれを達成しています。numpyの配列順序をfortran形式に強制するにはどうすればいいですか?

私の質問は以下のとおりです。

  1. これは、配列がFORTRANスタイルで保存されるべきか、より高速な1があることがnumpyの伝えるの早道ですか?
  2. numpyフラグを設定する可能性はありますか?そのため、作成されるすべての配列はFortran形式ですか?

答えて

11

numpy.arrayオブジェクトを生成するときにオプションの引数order = 'F'(デフォルト 'C')を使用します。これが私のやり方です、あなたがやっているのと同じことでしょう。 2番について、私はデフォルトの順序を設定することに気づいていませんが、配列を生成するときにオプションのオプション引数を入れるだけで十分です。

5

質問2について:配列の変換と操作を実行した後にFortranの順序を保持することに懸念があるかもしれません。私はエンディアンと同様の問題がありました。私はファイルからビッグエンディアンの生の配列をロードしましたが、ログ変換を適用すると結果の配列はリトルエンディアンになります。あなたはFortranの順序でbを割り当てるでしょうあなたのケースでは

b=np.zeros(a.shape,dtype=a.dtype) 
np.log10(1+100*a,b) 

:私は、インプレースログを行い、第一、第二、ビッグエンディアン配列を割り当てることによって問題を回避ました。

関連する問題