Numpy配列とリストの計算時間を比べてみます。
リストを使う
リストを使って足し算を行う場合は以下の様に書きます。
1 2 3 4 5 |
a = [1,2,3,4,5] b = [6,7,8,9,10] for i in range(5): print(a[i]+b[i]) |
numpyの配列を使う
nuppyの配列を使って同じ計算をしてみます。
1 2 3 4 5 6 |
import numpy as np e = np.array([1,2,3,4,5]) f = np.array([6,7,8,9,10]) print(e+f) |
こちらの方がシンプルにかけます。
計算時間の比較
データ数を増やして速度を比べてみましょう。
1から100万までの数を加算するのにかかる時間を、リスト、numpyのそれぞれで計測します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
import numpy as np import time NUMBER_OF_CALC = 1000000 ### リストの演算 start = time.time() # 1..NUMBER_OF_CALCまでの各整数を持つlistを作る int_list_A = list(range(NUMBER_OF_CALC)) int_list_B = list(range(NUMBER_OF_CALC)) # zipを使い、リストAとリストBのそれぞれの要素を加算する result = [x+y for x,y in zip(int_list_A,int_list_B)] erasped_time = time.time() - start print(erasped_time) ### Numpy Arrayの演算 start = time.time() # numpyのarangeを使い、1..NUMBER_OF_CALCまでの各整数を持つarrayを作る int_array_A = np.arange(NUMBER_OF_CALC) int_array_B = np.arange(NUMBER_OF_CALC) result = int_array_A + int_array_B erasped_time = time.time() - start print(erasped_time) |
1 2 |
0.0874640941619873 0.01407480239868164 |
8倍ほどリストよりもnumpyの方が速いことが分かりました。
素晴らしい速度ですね。
おわり。