【Python/NumPy】行列の演算(積、逆行列、転置行列、擬似逆行列など)

個人的には、行列は最小二乗法で近似式を求めるときや、アフィン変換を用いて画像の表示やリサイズを行う際に用いるのですが、この行列の演算は、PythonではNumPyを用いて行います。

NumPyのインポート

import numpy as np

行列の生成(array)

# 行列の生成
mat = np.array([[1, 2], [3, 4], [5, 6]])
print(mat)

(実行結果)

[[1 2]
 [3 4]
 [5 6]]

行列の積(matmul)

matA = np.array([[1, 2], [3, 4]])
matB = np.array([[5, 6], [7, 8]])
matAB = np.matmul(matA, matB)
print(matAB)

(実行結果)

[[19 22]
 [43 50]]

単位行列(identity)

matI = np.identity(3)
print(matI)

(実行結果)

[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

零行列(zeros)

mat = np.zeros((3, 4))
print(mat)

(実行結果)

[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]

逆行列(linalg.inv)

mat = np.array([[1, 2], [3, 4]])
matInv = np.linalg.inv(mat)
print(matInv)

(実行結果)

[[-2.   1. ]
 [ 1.5 -0.5]]

擬似逆行列(linalg.pinv)

mat = np.array([[1, 2], [3, 4], [5, 6]])
matInv = np.linalg.pinv(mat)
print(matInv)

(実行結果)

[[-1.33333333 -0.33333333  0.66666667]
 [ 1.08333333  0.33333333 -0.41666667]]

転置行列(.T)

mat = np.array([[1, 2], [3, 4]])
matT = mat.T
print(matT)

(実行結果)

[[1 3]
 [2 4]]

行列要素ごとの積(multiply)

matA = np.array([[1, 2], [3, 4]])
matB = np.array([[5, 6], [7, 8]])
matAB = np.multiply(matA, matB)
print(matAB)

(実行結果)

[[ 5 12]
 [21 32]]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください