我是一名工程研究生,目前正在从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上运行了高斯-赛德尔求解器,并获得了类似的结果(16.5秒对9.5秒)。
我是Python的新手,对编程不是非常精通。我正在使用WinPython 64位Python发行版,但也尝试了Pythonxy,但没有成功。
我读到的一个应该提高性能的方法是使用MKL构建Numpy。不幸的是,我不知道如何在Windows上做到这一点。我需要这样做吗?
有什么建议吗?