python加速器numba使用詳解
python的一個加速器包,這里不講原理,只講應(yīng)用過程,以及給出幾個小例子,直接寫就行了; 另外還給出了numba如何定義使用List
1、最簡單的使用
當(dāng)輸出返回值為整數(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自動更改加速模式,也就是使用nopython。
上述代碼等價于:
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、進階
當(dāng)輸出返回值為“不同類型值”時:
裝飾器使用: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)進行矩陣或向量運算時:
使用裝飾器:vectorize
from numba import vectorize, float64 import numpy as np @vectorize([float64(float64, float64)]) ?# 注意有中括號 def f(x, y): ? ? return x + y if __name__ == '__main__': ? ? a = np.array([1,2]) ? ? b = np.array([2,2]) ? ? print(f(a,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ù)類型,塞個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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中opencv圖像疊加、圖像融合、按位操作的具體實現(xiàn)
opencv圖像操作可以更好更快的方便我們處理圖片,本文主要介紹了圖像疊加、圖像融合、按位操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07Python計算庫numpy進行方差/標(biāo)準(zhǔn)方差/樣本標(biāo)準(zhǔn)方差/協(xié)方差的計算
今天小編就為大家分享一篇關(guān)于Python計算庫numpy進行方差/標(biāo)準(zhǔn)方差/樣本標(biāo)準(zhǔn)方差/協(xié)方差的計算,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12使用Python對網(wǎng)易云歌單數(shù)據(jù)分析及可視化
這篇文章主要介紹了使用Python對網(wǎng)易云歌單數(shù)據(jù)分析及可視化,本項目以數(shù)據(jù)采集、處理、分析及數(shù)據(jù)可視化為項目流程,需要的朋友可以參考下2023-03-03基于Numpy.convolve使用Python實現(xiàn)滑動平均濾波的思路詳解
這篇文章主要介紹了Python極簡實現(xiàn)滑動平均濾波(基于Numpy.convolve)的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05