Python内蔵関数とnumPy演算速度の比較
1471 ワード
Pythonは自分でいくつかの関数を持っていて、主にsum、max、minで、同時にnumPyの中にもいくつかの類似の関数があって、今日いくつかの関数の演算速度を比較して、やはりnumpyのarrayの計算速度が最も速いことを発見しました.
構想は、1万個の乱数を生成することによって、4つの方法で和を求め、最大値を求め、平均値を求める方法は和を求めるのと同じであり、最小値を求める方法は最大値を求めるのと似ているため、和を求めることと最大値を求める2つだけを測定した.
最後の結果は、#sum 1.606115818029.87746500969 0.223296165466 1.66015696526
arrayを対象としたnumpy計算が最も速く,numpy直接計算が最も遅く,内蔵関数速度が2番目に遅いことがわかる.
最大値を求める
構想は、1万個の乱数を生成することによって、4つの方法で和を求め、最大値を求め、平均値を求める方法は和を求めるのと同じであり、最小値を求める方法は最大値を求めるのと似ているため、和を求めることと最大値を求める2つだけを測定した.
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) #
t2=time.time()
sum2=np.sum(a)# numpy
t3=time.time()
b=np.array(a)
t4=time.time()
sum3=np.sum(b)# numpy array
t5=time.time()
c=Series(a)
t6=time.time()
sum4=c.sum()# pandas Series
t7=time.time()
print t2-t1,t3-t2,t5-t4,t7-t6
最後の結果は、#sum 1.606115818029.87746500969 0.223296165466 1.66015696526
arrayを対象としたnumpy計算が最も速く,numpy直接計算が最も遅く,内蔵関数速度が2番目に遅いことがわかる.
最大値を求める
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)#
t2=time.time()
sum2=np.max(a)# numpy
t3=time.time()
b=np.array(a)
t4=time.time()
sum3=np.max(b)# numpy array
t5=time.time()
c=Series(a)
t6=time.time()
sum4=c.max()# pandas Series
t7=time.time()
print t2-t1,t3-t2,t5-t4,t7-t6
:
# max 2.81509399414 9.83987283707 0.219717025757 1.62969207764
は としてarrayを とするnumpyが も い.
, を すると,まずオブジェクトをarrayに しnumpyで するべきであり, も い が られる.