繁体   English   中英

numpy慢于本征之类的c ++线性代数库吗?

[英]Is numpy slower than c++ linear algebra libraries like eigen?

我用它来实现神经网络。 我更喜欢NumPy,因为使用Python准备数据更加方便; 但是,我担心NumPy的速度不如c ++库。

NumPy是用C实现的。因此,大多数情况下,您只需要调用C并针对某些功能进行优化的Fortran函数或子例程。 因此,使用NumPy可以完成很多任务。 您需要向量化您的操作。 不要for NumPy数组编写循环。 当然,手动优化的C代码可以更快。 另一方面,NumPy包含许多已经优化的算法,这些算法可能比没有经验的C程序员编写的不是那么好的C代码要快。

您可以使用Cython从Python逐渐过渡到C,和/或使用Numba进行jit编译以将其编译为机器或gpu代码。

我不得不说,我认为这里的其他答案都缺少一些东西。

首先,正如@Mike Muller正确指出的那样,Python的数字库具有C或Fortran(或两者)后端,因此,纯Python的性能几乎无关紧要(与后端的性能相反,这可能很重要)。 在这方面,无论您是通过Python还是C ++来操纵MKL东西,都几乎没有什么不同。

但是有两个区别:

  • 从正面看,Python是交互式的。 这意味着,尤其是与IPython Notebook之类的东西结合使用时,您可以执行一个操作并绘制结果,执行另一个操作并绘制结果,等等。使用C ++或C ++等编译语言进行探索性分析很难获得这种效果。 Java。

  • 至少可以说,Python及其科学生态系统的不利方面是不完美地处理多核。 这是语言本身的一个基本问题(有关GIL的信息 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM