最近人工知能界隈でPythonが流行りになっていますが、当たり前のように「numpy」やら「np」というモノが使われていて、なんのこっちゃと思っているのは私だけではないかと思います。
NumpyはPythonで学術計算を行うためのライブラリで、面倒な行列計算や数学的な計算を簡単に記述できたりするそうです。
前回の記事でPythonの環境構築をしたので、この記事ではAnacondaを使用してNumpyを使用できるようにする方法と、簡単なNumpyの使い方を紹介します!
Numpyを使えるようにする
AnacondaでNumpyを使えるようにするのはとても簡単です!
- Anacondaを開き、対象の環境を選択
- 右側の画面の「Instaled」となっているプルダウンメニューを「Not Installed」に変える
- 一番右側の検索ボックスに「Numpy」と入力する
- リストに表示された「numpy」にチェックを入れて、右下の「Apply」ボタンを選択
- ポップアップで「Apply」ボタンを選択
- ポップアップが閉じたらインストールされるのを待つ
- 終わったらインストール完了!
前回の記事と同様に、Anacondaからターミナルを開いて、以下のコマンドを入力してエラーが出なければNumpyを使う準備は完了です。
1 2 |
$ python $ import numpy |
Numpyを使う
さて、Numpyを使う準備ができたところで実際にNumpyを使っていきましょう。
Numpyを使うための記述
PythonでNumpyを使うためには、Numpyをimportするだけで良いです。
一般的には、以下のようにnpという名前をつけてimportするようです。
1 |
import numpy as np |
Numpyで配列を使う方法
Numpyで配列を使うにはarray関数を使用します。
1 2 3 4 |
# 1次元配列の定義 ary1 = np.array([1, 2, 3]); # 2次元配列の定義 ary2 = np.array([[1, 2, 3], [4, 5, 5]]); |
これらの配列は行列として扱うことができるため、Numpyで用意されている行列演算にそのまま使用することができます。
もちろん、数値との演算も通常の演算子を用いて行うことはできます。
1 2 3 4 5 6 7 8 |
ary1 = np.array([[1, 2, 3], [4, 5, 6]]); ary2 = np.array([[4, 5, 6], [7, 8, 9]]); # 行列の足し算 res1 = ary1 + ary2 # [[5, 7, 9], [11, 13, 15]] # 行列の引き算 res2 = ary1 - ary2 # [[-3, -3, -3], [-3, -3, -3]] # 行列の掛け算 res3 = np.dot(ary1, ary2) # [[27, 33, 39], [63, 78, 93]] |
ちなみに、配列の要素数を取得するには、shape属性でtuple型で取得することができます。
1 2 |
ary = np.array([[1, 2, 3], [4, 5, 6]]); elm = np.shape # (2, 3) |
また、配列の要素が固定ではない配列は以下のようにzeros関数やones関数を使用します。
1 2 3 4 5 6 7 8 9 10 |
# (2, 3)の0埋めされた配列 ary1 = np.zeros((2, 3)); # (2, 3)の1埋めされた配列 ary2 = np.ones((2, 3)); # (2, 3)の配列に0〜1の範囲で初期化 ary3 = np.random.rand(2, 3) # 0〜99の100個の乱数を持つ配列 ary4 = np.random.randint(0, 100, size=100) # (2, 3)の配列に正規分布に則って初期化 ary5 = np.random.randn(2, 3) |
配列を使った関数
Numpyには、作った配列に対して使用できる便利な関数がいくつも用意されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 配列の平均を取得 avg = np.mean(ary) # 配列の最大値を取得 max = np.max(ary) # 配列の最小値を取得 min = np,min(ary) # 配列の標準偏差を取得 std = np.std(ary) # 配列の合計を取得 sum = np.sum(ary) # 配列のソート sort = np.sort(ary) # 配列の逆順ソート usort = np.sort(ary)[::-1] |
他の言語では自分で計算していたものが全て用意されているのは便利でいいですね。
Numpyで数学の計算
Numpyでは配列以外にも数学的な計算を行うことができます。
1 2 3 4 5 6 7 8 |
# 加算 res1 = np.add(a, b) # 減算 res2 = np.subtract(a, b) # 乗算 res3 = np.multiply(a, b) # 除算 res4 = np.divide(a, b) |
1 2 3 4 5 6 7 8 9 10 |
# 累乗 res5 = np.power(a, b) # 平方根 res6 = np.sqrt(a) # 正弦 res7 = np.sin(a) # 余弦 res8 = np.cos(a) # 正接 res9 = np.tan(a) |
まとめ
Anacondaを使用してNumpyを使用できるようにする方法と、簡単なNumpyの使い方を紹介しました。
私自身も調べながら初めてNumpyの使い方を知りましたが、これまで他の言語では自前で用意していたような処理が全て用意されているため非常に便利であるように感じました。
人工知能関係だけではなく画像処理(CVやCG)なんかでも他の言語に比べて計算が非常に楽になると思うので、今後色々と試してみようかなと思います。