擅长:python、mysql、java
<p><a href="http://en.wikipedia.org/wiki/NumPy" rel="noreferrer">NumPy</a>和MATLAB都为标准线性代数运算使用底层的<a href="http://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms" rel="noreferrer">BLAS</a>实现。一段时间以来,两者都使用了<a href="http://en.wikipedia.org/wiki/Automatically_Tuned_Linear_Algebra_Software" rel="noreferrer">ATLAS</a>,但现在,很明显,MATLAB还附带了其他实现,比如Intel的<a href="http://en.wikipedia.org/wiki/Math_Kernel_Library" rel="noreferrer">Math Kernel Library</a>(MKL)。哪个更快取决于系统和BLAS实现的编译方式。您还可以使用MKL编译NumPy,<a href="http://en.wikipedia.org/wiki/Enthought" rel="noreferrer">Enthought</a>正在研究对其Python发行版的MKL支持(请参见它们的<a href="http://www.enthought.com/products/roadmap.php" rel="noreferrer">roadmap</a>)。这也是最近关于这个的<a href="http://dpinte.wordpress.com/2010/01/15/numpy-performance-improvement-with-the-mkl/" rel="noreferrer">interesting blog post</a>。</p>
<p>另一方面,如果您需要更专业的操作或数据结构,那么Python和MATLAB都为您提供了各种优化方法(比如<a href="http://en.wikipedia.org/wiki/Cython" rel="noreferrer">Cython</a>,<a href="http://mathema.tician.de/software/pycuda" rel="noreferrer">PyCUDA</a>,…)。</p>
<p>编辑:我更正了这个答案,以考虑到不同的BLAS实现。我希望它现在能公正地反映当前的形势。</p>