私は現在、数値シミュレーションの目的で MATLAB から Python に移行している工学部の大学院生です。基本的な配列操作では、Numpy は MATLAB と同じくらい高速であるという印象を受けました。ただし、私が書いた 2 つの異なるプログラムでは、MATLAB は Numpy の 2 倍弱の速さであることがわかります。Numpy (Python 3.3) に使用しているテスト コードは次のとおりです。
import numpy as np
import time
a = np.random.rand(5000,5000,3)
tic = time.time()
a[:,:,0] = a[:,:,1]
a[:,:,2] = a[:,:,0]
a[:,:,1] = a[:,:,2]
toc = time.time() - tic
print(toc)
一方、MATLAB 2012a では次を使用しています。
a = rand(5000,5000,3);
tic;
a(:,:,1) = a(:,:,2);
a(:,:,3) = a(:,:,1);
a(:,:,2) = a(:,:,3);
toc
私が使用しているアルゴリズムは、Numpy と MATLAB を比較する NASA のWeb サイトで使用されているものです。この Web サイトは、Numpy がこのアルゴリズムの速度の点で MATLAB を上回っていることを示しています。それでも、私の結果は、Numpy のシミュレーション時間は 0.49 秒、MATLAB のシミュレーション時間は 0.29 秒であることを示しています。また、Numpy と Matlab の両方で Gauss-Seidel ソルバーを実行したところ、同様の結果が得られました (16.5 秒対 9.5 秒)。
私はPythonを初めて使用し、プログラミングに関してはあまり読み書きができません。私は WinPython 64 ビット Python ディストリビューションを使用していますが、Pythonxy も試してみましたが、役に立ちませんでした。
パフォーマンスを改善するはずだと私が読んだことの1つは、MKLを使用してNumpyを構築することです。残念ながら、Windowsでこれを行う方法がわかりません。これを行う必要がありますか?
助言がありますか?