【技術記事】Numpyで簡単に行列計算

みなさん、こんにちは、
みむすたーです。

今日は、PythonのライブラリであるNumpyを使って、
行列式の計算をしてみましょう。

もくじ

Numpyのインクルード

Numpyをインクルードするには、以下のようにimport numpyと入力しましょう。
as np の部分は、Numpyモジュールを毎回書くのが面倒なので、
Python技術者界隈で、頻繁に使われる短縮名称です。

#numpyをインクルードする
import numpy as np

行列データ生成

次に行列データを作成しましょう。
今回は、Numpyモジュールのarange関数、zeros関数、reshape関数を使いました。
それぞれの説明をしておくと、

arange関数

数列を作成するための関数です。
第一引数に数列の先頭の数値、
第二引数に数列の末尾 + 1の数値を設定します。
例えば、np.arange(1,10)と指定すると、1,2,3,…..9の数列が作成されます。

zeros関数

全ての値が 0 の数列を作成するための関数です。
第一引数に作成したい 0 の数を指定します。
第二引数は指定しなくても良いですが、データのタイプを指定します。
例えば、np.zeros(9,dtype=int)と指定すると、9つの整数型の 0 の数列が作成されます。

reshape関数

数列の次元数を変更するための関数です。
第一引数には一次元目の要素の数、
第二引数には二次元目の要素の数、…というように、各次元の要素数を指定します。
例えば、今回のように3×3の行列を作成したいのであれば、
一次元目に3を指定して、二次元目に3を指定します。

そして、今回はこれらの関数を使用して、以下の行列データを生成します。

# 行列 a を生成する
a = np.arange(1,10,1)
a = a.reshape(3,3)

# 行列 b を生成する
b = np.zeros(9,dtype=int).reshape(3,3) + 1

print("a の値は、\n" + str(a) + "\nです。")
print("b の値は、\n" + str(b) + "\nです。")

実行した結果は以下の通り。

a の値は、
[[1 2 3]
 [4 5 6]
 [7 8 9]]
です。

b の値は、
[[1 1 1]
 [1 1 1]
 [1 1 1]]
です。

行列の四則演算

四則計算は単純に+,-,*,/の演算子を使い以下のように書きます。

# 行列 a + b を計算する
print("a + b の値は、\n" + str(a + b) + "\nです。")

# 行列 a - b を計算する
print("a - b の値は、\n" + str(a - b) + "\nです。")

# 行列 a * b を計算する (行列積ではないことに注意)
print("a * b の値は、\n" + str(a * b) + "\nです。")

# 行列 a / b を計算する
print("a / b の値は、\n" + str(a / b) + "\nです。")

上記の四則演算のコードを実行した結果は以下の通りです。

a + b の値は、
[[ 2  3  4]
 [ 5  6  7]
 [ 8  9 10]]
です。
a - b の値は、
[[0 1 2]
 [3 4 5]
 [6 7 8]]
です。
a * b の値は、
[[1 2 3]
 [4 5 6]
 [7 8 9]]
です。
a / b の値は、
[[1. 2. 3.]
 [4. 5. 6.]
 [7. 8. 9.]]
です。

行列積

行列積を計算する際は、Numpyライブラリのdot関数を使用します。
dot関数の使用方法は、
第一引数に行列式の左項、
第二引数に行列式の右項、
を指定します。
以下のような感じです。

#行列 a と b の行列積を計算する
print("ab の値は、\n" + str(np.dot(a, b)) + "\nです。")

このコードを実行した結果が以下の通りとなります。

ab の値は、
[[ 6  6  6]
 [15 15 15]
 [24 24 24]]
です。

それでは、今日はこの辺りで。

コメント