首页> python> python科学计算> 文章内容
python科学计算有哪些提高运算速度的技巧?
来源 :中华考试网 2020-09-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加速我不太懂。还望后面的朋友补充。一些基本的经验就这些,应该是入门者都懂了…