私は現在、数値シミュレーションの目的でMATLABからPythonに移行している工学の大学院生です。私は、基本的な配列操作のために、NumpyはMATLABほど高速であるという印象を受けました。しかし、MATLABはNumpyの2倍の速さです。私はnumpyのために使用していたテストコード(パイソン3.3)である:Numpyの2倍のMATLAB
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
私が使用しているアルゴリズムは、比較NASA websiteに使用されるものですナンシーとMATLABこの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上でこれを行う方法がわかりません。私もこれをする必要がありますか?
提案がありますか?
クリストフゴールケnumpyのは、インテルMKLにリンクされて、多くのPythonパッケージ用のコンパイル済みのWindowsバイナリを提供します。http://www.lfd.uci.edu/~gohlke/pythonlibs/ – Amro
うん。 PythonはMatlabに比べてさらに遅くて、あなたは運が良かったです。 :-) – horchler
WinPythonの現在のディストリビューション(既にNumPy-MKLが付属しています)(https://code.google.com/p/winpython/wiki/PackageIndex_33)。 – Jaime