Python~高速リスト作成(内包表記、Numpy)~
リストの作成
Pythonでは標準で用意されているListの作り方として、for文を使ってappendで順番に増やしていくやり方と内包表記があります。また、Numpyを用いてarange関数で作成する方法もあります。それぞれの速さを計測してみましょう
リスト作成の速さ
それでは早速コードを見ていきましょう。
# Numpy
def genlist0(n,m):
return np.arange(n,m)
%timeit genlist0(1,10**7)
# Python list
def genlist1(n,m):
ans = []
for i in range(n,m,1):
ans.append(i)
return ans
%timeit genlist1(1,10**7)
def genlist2(n,m):
return [i for i in range(n,m,1)]
%timeit genlist2(1,10**7)
比較として、1-10000000までの1ずつ増える配列の生成にかかる時間を比較します。
NumpyでのArangeによる生成、リストでAppendして生成、リストの内包表記での生成です。
結果は以下の通りです。
100 loops, best of 5: 17.7 ms per loop 1 loop, best of 5: 1.14 s per loop 1 loop, best of 5: 714 ms per loop
なんということでしょう。
Numpyは17.7msecなのに対して、リストのfor文による生成は1.14sec、高速といわれる内包表記ですら714msecかかっております。
以下にNumpyが速いかがわかりますね。
コメント
コメントを投稿