NumPyのことについてこれからちょいちょい書いておこうと思います。
NumPyはNumerical Pythonの略で、データを高密度のデータバッファに格納し、操作を行うための効率的なインターフェース…です。
ディープラーニングをやる上で、numpy使わないことはほぼないと思います。
しかし、今日まで私はNumPyについては
「うーん わからない時にその都度ググればいいかな」
とか思ってたんですが、♪違う違う~ そうじゃなーいー ってことに気が付きました。
っていうのは、次の理由からです。
- リストなどより、NumPyでデータを扱った方がずっと早い。機械学習などでは、1万回ループするとか普通にありますが、一回のループで1秒遅いと、1万秒遅くなっちゃいます。
- NumPyでやれることがわかってないと、データの整形とかがうまくできない
- Pythonについては、意外とまだまだネット上の情報が少ない(日本語)。なので、ググる人のためになるかな~。
そこで、ここではNumPy自身がどう、とかよりも、目的に合わせて、私が便利だな~と思う関数とかを取り上げていこうと思います。
1回目は、ゼロじゃない要素をカウントする、count_nonzero、です。
import numpy as np
np_pieces = np.array([
[1, 0, 0],
[1, 0, 1],
[0, 0, 0]
])
res = np.count_nonzero(np_pieces, axis=0)
print(res)
#次が出力されます。
[2 0 1]
np.count_nonzero(np_pieces, axis =0)
のaxisですが、これは基準にしたい軸の数です。
軸って何?って思いますよね? …。 嫌い…軸……。(ノω・、) ウゥ・・・
とりあえず、2次元配列では、縦が軸が0、横が1です。今回は、np_piecesという配列の、縦方向が0軸で、縦方向に数えていくと、2,0,1、ということです。
何も指定しないと全部通してのゼロじゃない要素を数えてくれます。
import numpy as np
np_pieces = np.array([
[1, 0, 0],
[1, 0, 1],
[0, 0, 0]
])
res = np.count_nonzero(np_pieces)
print(res)
#次が出力されます。
3