python

当前位置:中华考试网 >> python >> python科学计算 >> 文章内容

python科学计算有哪些提高运算速度的技巧?

来源:中华考试网  [2020年9月21日]  【

   用 Python 做科学计算,但是被 Python 的运行速度所困扰。矩阵运算也很慢,想征求下大家的建议。有什么优化 Python 科学计算的方法么?

  py科学计算用的不太多。也就是最近天天跑数据分析。我简单说自己的一些基本经验给比我还菜的新手,抛砖引玉

  一:学会正确使用numpy scipy。 numpy scipy写好的绝不自己写,比如矩阵运算等操作,pylab的实现还算不错。各种函数都有,尽量使用他们可以避免初学者大部分的速度不足问题。因为这些函数大部分都是预编译好的。

  根据我几年前的测试,python的矩阵运算速度并不慢,(因为你运行的是动态链接库里面的函数而不是脚本)比mathematica快,和matlab持平。

  大部分新手不擅长看文档啥都自己造轮子是不好的。当然老手把效率写的比开源库高也不算啥新闻,毕竟有对特定程序的优化

  二:减少for的使用,多使用向量化函数,np.vectorlize可以把函数变成对数组逐元素的操作,比for效率高几个华莱士。

  三:对内存友好,操作大矩阵的时候减少会引起整矩阵对此copy的操作

  四:系统最慢的大部分时候是io,包括上面说的内存操作和频繁的读入读出以及debug输出。避免他们,在需要实时处理的时候引入类似于gpu的pipeline管线机制或者使用灵活的多线程编程可以起到奇效。

  五:matplotlib的绘图效率并不高明,在使用交互绘图(plt.ion)的时候减少不必要的刷新率。

  六:程序对jit(运行前编译)友好,避免频繁的改动数据类型引起的繁杂类型推导(不过很少见科学计算程序有这个毛病)

  七:要不然,干脆把python用cython之类的玩意编译了吧。。但在科学计算上我觉得这样做卵用不大。

  科学计算最好应该还是使用gpu加速,但关于py如何使用cuda/opencl加速我不太懂。还望后面的朋友补充。一些基本的经验就这些,应该是入门者都懂了…

责编:hym
  • 会计考试
  • 建筑工程
  • 职业资格
  • 医药考试
  • 外语考试
  • 学历考试