【Python】Numpyの配列とリストの計算速度を比較してみた

 

Numpy配列とリストの計算時間を比べてみます。

リストを使う

 

リストを使って足し算を行う場合は以下の様に書きます。

a = [1,2,3,4,5]
b = [6,7,8,9,10]

for i in range(5):
    print(a[i]+b[i])

 

numpyの配列を使う

 

nuppyの配列を使って同じ計算をしてみます。

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のそれぞれで計測します。

 

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)

 

0.0874640941619873
0.01407480239868164

 

8倍ほどリストよりもnumpyの方が速いことが分かりました。

素晴らしい速度ですね。

 

おわり。