我用它来实现神经网络。我更喜欢NumPy,因为使用Python准备数据更方便;但是,我担心NumPy不如c ++库快。
答案 0 :(得分:2)
NumPy是用C实现的。所以大多数时候你只需要调用C和一些功能优化的Fortran函数或子程序。因此,NumPy可以为许多任务获得合适的速度。您需要对您的操作进行矢量化。不要在NumPy数组上写for
个循环。当然,手动优化的C代码可以更快。另一方面,NumPy包含许多已经优化的算法,这些算法可能比经验不足的C程序员编写的最优C代码更快。
您可以使用Cython逐渐从Python迁移到C和/或使用Numba 用于jit-compilation到机器或gpu代码。
答案 1 :(得分:2)
我不得不说,我认为这里的其他答案都缺少了。
首先,正如@Mike Muller正确指出的那样,Python的数值库有C或Fortran(或两者)后端,因此纯Python的性能几乎无关紧要(与后端的性能相反,后者可能很重要)。在这方面,无论你是通过Python还是C ++操纵像MKL
这样的东西 - 都没有什么区别。
但有两点不同:
在Python的优势方面 - 它是互动的。这意味着,特别是与IPython Notebook之类的东西一起,您可以执行操作并绘制结果,执行另一个操作并绘制结果等。使用编译语言进行探索性分析很难获得此效果像C ++或Java。
在Python的负面 - 它及其科学生态系统,至少可以说,不完美地处理多核。这是语言本身的一个基本问题(阅读GIL)。