我是一名工程研究生,目前正在从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 website的比较Numpy和MATLAB的算法。该网站显示,Numpy在该算法的速度方面超过了MATLAB。然而,我的结果显示了Numpy的0.49秒仿真时间和MATLAB的0.29秒仿真时间。我也在Numpy和Matlab上运行了一个高斯塞德尔求解器,我得到了类似的结果(16.5秒vs 9.5秒)
我对Python是全新的,在编程方面并不十分有识字。我正在使用WinPython 64位Python发行版,但也尝试过Pythonxy无效。
我读过的一件应该提高性能的东西是使用MKL来建立Numpy。不幸的是,我不知道如何在Windows上这样做。我甚至需要这样做吗?
有什么建议么?