亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python加速器numba使用詳解

 更新時(shí)間:2023年02月02日 09:32:38   作者:_劉文凱_  
本文主要介紹了python加速器numba使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

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)文章

最新評(píng)論