溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎樣進(jìn)行Python內(nèi)置函數(shù)與numPy運(yùn)算速度對(duì)比

發(fā)布時(shí)間:2021-10-14 10:44:41 來源:億速云 閱讀:128 作者:柒染 欄目:編程語言

本篇文章為大家展示了怎樣進(jìn)行Python內(nèi)置函數(shù)與numPy運(yùn)算速度對(duì)比,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

Python自己帶了幾個(gè)函數(shù),主要是sum,max,min,同時(shí)numPy中也有幾個(gè)類似的函數(shù),今天對(duì)比了一下幾個(gè)函數(shù)的運(yùn)算速度,發(fā)現(xiàn)了還是numpy的array計(jì)算速度最快。

思路,通過產(chǎn)生1萬個(gè)隨機(jī)數(shù),對(duì)其用四種方法求和,以及求最大值,求均值的方式與求和相同,求最小值的方式與求最大值也類似,故只測(cè)了求和與最大值兩項(xiàng)。

import random
import time
import numpy as np
from pandas import Series
a=[]
for i in range(100000000):
    a.append(random.random())
t1=time.time()
sum1=sum(a) #直接用內(nèi)置函數(shù)求
t2=time.time()
sum2=np.sum(a)#用numpy直接求
t3=time.time()

b=np.array(a)
t4=time.time()
sum3=np.sum(b)#用numpy轉(zhuǎn)換為array后求
t5=time.time()

c=Series(a)
t6=time.time()
sum4=c.sum()#用pandas的Series對(duì)象求
t7=time.time()
print t2-t1,t3-t2,t5-t4,t7-t6

最后的結(jié)果分別為# sum 1.60611581802       9.87746500969    0.223296165466   1.66015696526

可以看出,以array為對(duì)象的numpy計(jì)算方式最快,而以numpy直接計(jì)算最慢,內(nèi)置函數(shù)速度排第二。

求最大值

<pre name="code" class="python">import random
import time
import numpy as np
from pandas import Series
a=[]
for i in range(100000000):
    a.append(random.random())
t1=time.time()
sum1=max(a)#直接用內(nèi)置函數(shù)求
t2=time.time()
sum2=np.max(a)#用numpy直接求
t3=time.time()
b=np.array(a)
t4=time.time()
sum3=np.max(b)#用numpy轉(zhuǎn)換為array后求
t5=time.time()
c=Series(a)
t6=time.time()
sum4=c.max()#用pandas的Series對(duì)象求
t7=time.time()
print t2-t1,t3-t2,t5-t4,t7-t6



結(jié)果為:
# max 2.81509399414    9.83987283707   0.219717025757    1.62969207764
結(jié)果依然是以array為計(jì)算對(duì)象的numpy最快。

綜上,如果考慮運(yùn)算速度,應(yīng)該先將對(duì)象轉(zhuǎn)為array,再用numpy進(jìn)行計(jì)算,可獲得最快的計(jì)算速度。

上述內(nèi)容就是怎樣進(jìn)行Python內(nèi)置函數(shù)與numPy運(yùn)算速度對(duì)比,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI