EeBlog(テクニカルブログ)

AI(人工知能)実践 第4回 Numpyモジュール1

AI(人工知能)実践 第4回です。
前回までではPythonについて触れてきました。
第4回もPython関連となりますが、今回はNumpyモジュールについて触れていきます。

 
Numpyモジュールとは、数値計算を効率的に行うための拡張モジュールであり、
型付き多次元配列に対する大規模な計算を簡単に行えるようにするものです。
なお、このモジュールはオープンソースで、ライセンスについては2018年6月時点では、
修正BSDライセンスとなっています。
また、関連するモジュールとして良く情報が出てくるものとして、
Numpyを拡張して数値解析関連を強くしたScipyや、
Numpyのためのグラフ描画ライブラリのMatplotlibなどがあります。
 
では、コード例と共に使い方の一部を紹介していきます。
※尚、提供されているメソッドは非常に多いため、必要に応じてやりたい操作を
 書籍やネットで調べるというのがベターかと思います。
 
下記では、別途記載がない限り、Numpyについては「import numpy as np」でインポートされ、
npで使用されることとします。
 

多次元配列(ndarray)の作成

np.array(object[, dtype, copy, order, subok, ndmin])
指定された値、データタイプで配列を作成します。データタイプは省略可能です。

np.zeros(shape[, dtype, order])
指定された次元、データタタイプで値が0の配列を作成します。データタイプは省略可能です。

np.ones(shape[, dtype, order])
指定された次元、データタタイプで値が1の配列を作成します。データタイプは省略可能です。

np.empty(shape[, dtype, order])
指定された次元、データタタイプで値が不定の配列を作成します。データタイプは省略可能です。

np.zeros_like(a[, dtype, order, subok])
渡された配列と同じ形と型のゼロの配列を返します。データタイプ、並び順、サブクラスフラグは省略可能です。

※ndarrayの作成方法についても、上記以外にも多くのメソッドが提供されています。
  

各種演算

・加算

各要素に加算をする場合
array = np.array([1, 2, 3])
array + 1

実行結果:array([2, 3, 4])
 

配列同士を加算する場合
arrayA = np.array([1, 2, 3])
arrayB = np.array([4, 5, 6])
arrayA + arrayB

実行結果:array([5, 7, 9])
 

・減算

各要素に減算をする場合
array = np.array([1, 2, 3])
array - 1

実行結果:array([0, 1, 2])
 

配列同士を減算する場合
arrayA = np.array([1, 2, 3])
arrayB = np.array([4, 5, 6])
arrayA - arrayB

実行結果:array([-3, -3, -3])
 

・乗算

各要素に乗算をする場合
array = np.array([1, 2, 3])
array * 2

実行結果:array([2, 4, 6])
 

配列同士を乗算する場合
arrayA = np.array([1, 2, 3])
arrayB = np.array([4, 5, 6])
arrayA * arrayB

実行結果:array([4, 10, 18])
 

・除算

各要素に除算をする場合
array = np.array([1, 2, 3])
array / 2

実行結果:array([0.5, 1., 1.5])
 

配列同士を除算する場合
arrayA = np.array([1, 2, 3])
arrayB = np.array([4, 5, 6])
arrayA / arrayB

実行結果:array([0.25, 0.4 , 0.5 ])
 

・内積

arrayA = np.array([1, 2, 3])
arrayB = np.array([4, 5, 6])
np.dot(arrayA, arrayB)

実行結果:32
 

・外積

arrayA = np.array([1, 2, 3])
arrayB = np.array([4, 5, 6])
np.cross(arrayA, arrayB)

実行結果:array([-3, 6, -3])
 

・行列の結合(横)

arrayA = np.array([1, 2, 3])
arrayB = np.array([4, 5, 6])
np.hstack((arrayA, arrayB))

実行結果:array([1, 2, 3, 4, 5, 6])
 

・行列の結合(縦)

arrayA = np.array([1, 2, 3])
arrayB = np.array([4, 5, 6])
np.vstack((arrayA, arrayB))

実行結果:array([[1, 2, 3],[ 4, 5, 6]])
 
今回も長くなってきましたので、次回に続きます。