初めに
今週は、データ分析Weekと称し、データ分析・機械学習をとことんやりたい。
まずは、データ解説をする上で必須の(イメージがある)Numpyから。
Udemyのレッスンを一通り聞いても、Numpyの良さ(すごさ)がいまいちピントこなかったので、以下のサイトを参考にNumpyのすごさを実感してみた。
https://ai-trend.jp/programming/python/what-is-numpy/
趣旨
●リスト VS Numpy
リストでやろうと思ったら
listA = [4, 5, 6, 7, 8]
listB = [1, 2, 3, 4, 5]
listC = []
for i in range(5):
listC.append(listA[i] + listB[i])
print(listC)
Numpyでやろうと思ったら
import numpy as np
listA = np.array([4,5,6,7,8])
listB = np.array([1,2,3,4,5])
listC = listA + listB
print(listC)
この結果から思うこと
Numpyの方が、コードがわかりやすい(+でそれぞれのリストの要素を足すことできるのは直感的)
リストの各要素と同じ数を足す
リストでやろうと思ったら
listA = [4, 5, 6, 7, 8]
listC = []
for i in range(5):
listC.append(listA[i] + 5)
print(listC)
Numpyでやろうと思ったら
import numpy as np
listA = np.array([4,5,6,7,8])
listC = listA + 5
print(listC)
この結果から思うこと
先ほど同様、Numpyのほうが直感的なコードで済んで楽(やはりfor文を使わずに済むというのはうれしい)
Trueの値だけをリストから取り出す
Numpyでやろうと思ったら
import numpy as np
listA = np.array([4,5,6,7,8])
cond = np.array([True,False,True,True,False])
print(listA[cond])
リストでやろうと思ったら
listA = [4,5,6,7,8]
cond = [True,False,True,True,False]
listA[cond]
エラーでできない
TypeError: list indices must be integers or slices, not list
条件を満たすものだけをリストから取り出す
Numpyでやろうと思ったら
import numpy as np
listA = np.array([4,5,6,7,8])
cond = listA > 6
print(listA[cond])
まとめ
Numpyのすごいところ(リストに比べて)は、以下の3つ。
- 速い
- 柔軟
- 直感的
ぼく的には、3番の「直感的」であるのがよくよく痛感した。今回は、たった5つの要素の数列だったから優位性に大きな差がないように思えるけど、数列が1000や10000と大きなものとなると、3つの優位性をひしひしと感じると思う。