您好,登錄后才能下訂單哦!
本篇文章為大家展示了怎樣進(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è)資訊頻道。
免責(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)容。