首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在我的计算机上,Python特征值计算比MATLAB慢得多。为什么?

在我的计算机上,Python特征值计算比MATLAB慢得多。为什么?
EN

Stack Overflow用户
提问于 2011-05-19 06:15:53
回答 2查看 3.7K关注 0票数 14

我想用Python 2.6.5计算大型矩阵(大约1000x1000)的特征值。我一直无法快速做到这一点。我没有发现任何其他解决这个问题的帖子。

当我跑的时候

代码语言:javascript
运行
复制
a = rand(1000,1000);
tic;
for i =1:10
    eig(a);
end
toc;

在MATLAB中,这大约需要30秒。Python中的类似测试需要216秒。使用RPy在R中运行它并不会显著提高计算速度。Octave中的一次测试花了93秒。我对速度上的差异感到有点困惑。

我在网上能找到的类似问题的唯一实例是this,它已经有好几年的历史了。这个问题中的发帖者有一个不同的Python目录结构(我将其归因于帖子的年龄,尽管我可能会弄错),所以我没有足够的信心去尝试遵循记者发布的说明。

我的包管理器说我已经安装了LAPACK,并且我正在使用NumPy和SciPy进行Python计算:

代码语言:javascript
运行
复制
from numpy import *
from scipy import *
from numpy.linalg import *
import time

a = randn(1000,1000)
tic = time.clock()
for i in range(0,10):
    eig(a)
toc = time.clock()
print "Elapsed time is ", toc-tic

我是Python的新手,所以我可能做了一些愚蠢的事情。如果我需要提供更多的信息,请告诉我。

EN

回答 2

Stack Overflow用户

发布于 2011-05-19 07:33:05

我认为您看到的是Matlab正在使用的Intel Math Kernel Library (MKL)与您系统上的任何LAPACK实现(也许是ATLAS?)之间的区别。那个scipy与。你可以看到MKL在these benchmarks中的速度有多快。

我想,如果您能够根据英特尔MKL库重新构建Scipy,您将获得更好的性能。如果您使用的是Windows,那么可以从here下载预先构建的副本,或者您可以考虑使用类似于consider发行版的东西。

票数 15
EN

Stack Overflow用户

发布于 2011-05-19 06:53:01

我确实在时间上有所不同,但没有你的那么激烈。我的MATLAB (R2010b)计时是大约25秒,而python (2.7)计时是大约60秒。

我对这些数字并不感到惊讶,因为MATLAB仅仅是一种数值和矩阵操作语言,而且它的JIT加速器比python更有优势,后者是一种通用语言。通常,MATLABpython+numpy之间的差异非常小,但当矩阵大小时会变得很明显,就像您的例子一样。

这并不意味着没有办法提高python的性能。scipy网站上的PerformancePython文章很好地介绍了提高python性能的不同方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6051678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档