python加速器numba使用詳解
python的一個(gè)加速器包,這里不講原理,只講應(yīng)用過(guò)程,以及給出幾個(gè)小例子,直接寫(xiě)就行了; 另外還給出了numba如何定義使用List
1、最簡(jiǎn)單的使用
當(dāng)輸出返回值為整數(shù)或浮點(diǎn)數(shù)時(shí):
from numba import jit @jit(nopython=True) def f(x, y): ? ? return x+y if __name__ == '__main__': ? ? a = 1 ? ? b = 1 ? ? print(f(a,b))
解釋:
使用裝飾器,另外,nopython=True是防止numba自動(dòng)更改加速模式,也就是使用nopython。
上述代碼等價(jià)于:
from numba import njit @njit ?# 也就是jit(nopython=True) def f(x, y): ? ? return x+y if __name__ == '__main__': ? ? a = 1 ? ? b = 1 ? ? print(f(a,b))
2、進(jìn)階
當(dāng)輸出返回值為“不同類型值”時(shí):
裝飾器使用:generated_jit
from numba import generated_jit, typed @generated_jit(nopython=True) def f2(x): ? ? if x==1: ? ? ? ? return lambda x: x+1 ? ? else: ? ? ? ? return lambda x: [1,2] if __name__ == '__main__': ? ? a = 1 ? ? print(f2(a))
當(dāng)進(jìn)行矩陣或向量運(yùn)算時(shí):
使用裝飾器:vectorize
from numba import vectorize, float64 import numpy as np @vectorize([float64(float64, float64)]) ?# 注意有中括號(hào) def f(x, y): ? ? return x + y if __name__ == '__main__': ? ? a = np.array([1,2]) ? ? b = np.array([2,2]) ? ? print(f(a,b))
補(bǔ)充
在numba內(nèi)定義列表:
import numpy as np import time NUM = 160 from numba import jit from numba.typed import List a = List() a.append(1) # 同樣需要指定數(shù)據(jù)類型,塞個(gè)1,數(shù)據(jù)類型就是int @jit(nopython=True) def f(a): ? ? for i in range(NUM): ? ? ? ? a.append(i) if __name__ == '__main__': ? ?for i in range(5): ? ? start = time.time() ? ? f(a) ? ? print(time.time()-start)
到此這篇關(guān)于python加速器numba使用詳解的文章就介紹到這了,更多相關(guān)python加速器numba內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中opencv圖像疊加、圖像融合、按位操作的具體實(shí)現(xiàn)
opencv圖像操作可以更好更快的方便我們處理圖片,本文主要介紹了圖像疊加、圖像融合、按位操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07Python計(jì)算庫(kù)numpy進(jìn)行方差/標(biāo)準(zhǔn)方差/樣本標(biāo)準(zhǔn)方差/協(xié)方差的計(jì)算
今天小編就為大家分享一篇關(guān)于Python計(jì)算庫(kù)numpy進(jìn)行方差/標(biāo)準(zhǔn)方差/樣本標(biāo)準(zhǔn)方差/協(xié)方差的計(jì)算,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12解決使用pycharm提交代碼時(shí)沖突之后文件丟失找回的方法
這篇文章主要介紹了解決使用pycharm提交代碼時(shí)沖突之后文件丟失找回的方法 ,需要的朋友可以參考下2018-08-08使用Python對(duì)網(wǎng)易云歌單數(shù)據(jù)分析及可視化
這篇文章主要介紹了使用Python對(duì)網(wǎng)易云歌單數(shù)據(jù)分析及可視化,本項(xiàng)目以數(shù)據(jù)采集、處理、分析及數(shù)據(jù)可視化為項(xiàng)目流程,需要的朋友可以參考下2023-03-03基于Numpy.convolve使用Python實(shí)現(xiàn)滑動(dòng)平均濾波的思路詳解
這篇文章主要介紹了Python極簡(jiǎn)實(shí)現(xiàn)滑動(dòng)平均濾波(基于Numpy.convolve)的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05解決python運(yùn)行啟動(dòng)報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了解決python運(yùn)行啟動(dòng)報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06