みなさん、こんにちは、
みむすたーです。
今日は、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]]
です。
それでは、今日はこの辺りで。
コメント