numpy 加速心得
python 運(yùn)行效率低,這對(duì)于有些任務(wù)不太友好,特別是大量的數(shù)據(jù)處理任務(wù),如何提高數(shù)據(jù)處理的效率,本人有幾點(diǎn)體會(huì)。
1、盡量使用 numpy 進(jìn)行處理,比如數(shù)組不要用 list 創(chuàng)建,而是用 np.array創(chuàng)建
2、盡量使用 numpy 自帶函數(shù)進(jìn)行處理,比如計(jì)算數(shù)組a的長度,用 a.shape[0],而不是 len(a)
3、盡量避免 numpy 和 Python 自帶的語法混合編程,如盡量少用 list,dict 等數(shù)據(jù)結(jié)構(gòu)
4、盡量避免循環(huán),特別是多重循環(huán)
5、如果循環(huán)不可避免,則循環(huán)形式盡可能接近 c 語言風(fēng)格,比如采用 for i in range(a.shape[0],而不是 for item in a。最后加上大殺器 numba 模塊,則有時(shí)可使循環(huán)提速百倍以上。注意numba模塊只需加入有循環(huán)的模塊,所以盡可能使循環(huán)模塊封裝成一個(gè)獨(dú)立函數(shù),此函數(shù)盡可能簡(jiǎn)單,最簡(jiǎn)單到只有循環(huán)模塊。
6、 numpy 自帶函數(shù)都是經(jīng)過優(yōu)化的,使用 numba 幾乎達(dá)不到優(yōu)化效果
7、其他知名模塊如 scipy, 也都是經(jīng)過優(yōu)化的,使用 numba 幾乎達(dá)不到優(yōu)化效果
8、最后優(yōu)化會(huì)使代碼難以調(diào)試,容易出錯(cuò),所以優(yōu)化是最后進(jìn)行且只對(duì)程序熱點(diǎn)進(jìn)行優(yōu)化
9、多進(jìn)程有時(shí)不僅不能提高效率,反而使效率減小很多倍。
總結(jié)
以上是生活随笔為你收集整理的numpy 加速心得的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Offline spike sorter
- 下一篇: 贝叶斯定理、显著性检验、p值关系、分类