murnana's diary

なんとなくつづっていく

「ゼロから作るDeep Leaning」を読んでいく - NumPy編

murnana.hatenablog.com

の続き。 今回はNumbPy編。


NumPyとは

Pythonの計算は遅い。これはPythonに限った話ではないが、遅い。
しかしPythonは、C言語などの静的言語と組み合わせることで高速化することができる。動的言語あるあるですかね?こういうのは

NumPyの特徴は数学計算でよく使われるもの(配列など)をC言語Fortranによって高速化されているため、純粋にPythonを使うよりは早い(どれほど早いかはここでは比較しない)。さすが女神*1だ。

インポート

ライブラリ本体はAnacondaに入っているので、ダウンロードは必要ない。
そのまま、import numpyとか書けばいい。

書籍的には略したいらしく、import numpy as npと書けば短くなるぞ!みたいなことを書いているが、私の場合は逆に混乱するので(やたらと言葉を略すな!というやつだ)、素直にnumpyと書く。

配列は神

書籍はこの後、ひたすらnumpy.array()の話をする。
これが結構賢くなった気分にしてくれる。

配列は1次元だけではなく、多次元も表現できる(行列もつくれるぞ!)。
また、2×2の行列に対しスカラ値を与えると、スカラ値が勝手に2×2行列に変身し(ブロードキャスト)、いい感じに計算してくれる。

個人的に一番驚いたのがこれ。

>>> X = numpy.array([[51, 55], [14, 19], [0, 4]])
>>> X = X.flatten() # Xを1次元配列に変換
[51, 55, 14, 19, 0, 4]
>> X[numpy.array([0, 2, 4])] # Xから0,2,4番目の要素を取得
[51, 14, 0]
>>> X > 15
[True, False, True, False, False, False]
>>> X[X>15]
[51, 55, 19]

printで出力しましょう…!

シェーダーで流行らないだろうか…


書籍は一応ここまで。
別のページでNumPyのうんちくがあれば追記するかも…?