ぺーぱーの日々

上機嫌でいること、夢中でいることを目標に、今日も色んなことに手を出します。

MENU

Numpyのなにが凄いの?

初めに

今週は、データ分析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つ。

  1. 速い
  2. 柔軟
  3. 直感的

ぼく的には、3番の「直感的」であるのがよくよく痛感した。今回は、たった5つの要素の数列だったから優位性に大きな差がないように思えるけど、数列が1000や10000と大きなものとなると、3つの優位性をひしひしと感じると思う。