我是一名工程研究生,目前正在从 MATLAB 过渡到 Python,以进行数值模拟。我的印象是,对于基本的数组操作,Numpy 会和 MATLAB 一样快。但是,对于我编写的两个不同的程序,MATLAB 的速度似乎比 Numpy 快两倍。我用于 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
我使用的算法是在 NASA网站上使用的比较 Numpy 和 MATLAB 的算法。该网站显示 Numpy 在该算法的速度方面超过了 MATLAB。然而,我的结果显示 Numpy 的仿真时间为 0.49 秒,MATLAB 的仿真时间为 0.29 秒。我还在 Numpy 和 Matlab 上运行了 Gauss-Seidel 求解器,得到了类似的结果(16.5 s vs. 9.5 s)
我是 Python 的新手,在编程方面并不是非常有文化。我正在使用 WinPython 64 位 Python 发行版,但也尝试过 Pythonxy 无济于事。
我读过的应该提高性能的一件事是使用 MKL 构建 Numpy。不幸的是,我不知道如何在 Windows 上执行此操作。我什至需要这样做吗?
有什么建议么?