NumPyの numpy.linalg モジュールを使用すると、逆行列や行列式といった線形代数(Linear Algebra)の重要な指標を簡単に算出できます。
ここでは、転置やトレースといった基本操作と合わせて、主要な線形代数関数の使い方を解説します。
目次
主な線形代数関数一覧
numpy.linalg モジュールに含まれる代表的な関数とその戻り値です。
| 関数 | 戻り値の内容 |
np.linalg.inv(M) | 逆行列 元の行列と掛けると単位行列になる行列。正則行列でない(行列式が0)場合はエラーになります。 |
np.linalg.det(M) | 行列式 行列の「体積拡大率」を表す数値。これが0の場合、逆行列を持ちません。 |
np.linalg.matrix_rank(M) | ランク(階数) 行列の中で、互いに独立な行(または列)の数。 |
実行可能なサンプルコード
以下のコードは、2行2列の正方行列 [[1, 2], [3, 4]] を定義し、各種計算を行う例です。
逆行列や行列式の計算結果を確認しやすい値に設定しています。
import numpy as np
def linear_algebra_demo():
# 1. 行列の定義
# ここでは例として [[1, 2], [3, 4]] を使用します
target_matrix = np.array([
[1, 2],
[3, 4]
])
print("--- 元の行列 ---")
print(target_matrix)
# 2. 転置行列 (Transpose)
# 行と列を入れ替えます。.T 属性を使います
print("\n--- 転置行列 (.T) ---")
print(target_matrix.T)
# 3. トレース (Trace)
# 対角成分の和 (1 + 4 = 5)
print("\n--- トレース (.trace()) ---")
print(target_matrix.trace())
# 4. 逆行列 (Inverse Matrix)
# np.linalg.inv() を使用
print("\n--- 逆行列 (np.linalg.inv) ---")
try:
inv_matrix = np.linalg.inv(target_matrix)
print(inv_matrix)
except np.linalg.LinAlgError:
print("逆行列を計算できません(特異行列です)。")
# 5. 行列式 (Determinant)
# np.linalg.det() を使用
# 計算式: (1 * 4) - (2 * 3) = 4 - 6 = -2
print("\n--- 行列式 (np.linalg.det) ---")
det_val = np.linalg.det(target_matrix)
print(f"{det_val:.2f}")
# 6. ランク (Rank)
# np.linalg.matrix_rank() を使用
# 行同士が独立しているのでランクは 2 になります
print("\n--- ランク (np.linalg.matrix_rank) ---")
rank_val = np.linalg.matrix_rank(target_matrix)
print(rank_val)
if __name__ == "__main__":
linear_algebra_demo()
解説:メソッドと関数の使い分け
- 配列の属性/メソッドとして使うもの
- 転置:
変数名.T - トレース(対角和):
変数名.trace() - これらは計算コストが低く、配列オブジェクト自体が機能を持っています。
- 転置:
np.linalgモジュールを使うもの- 逆行列:
np.linalg.inv(変数名) - 行列式:
np.linalg.det(変数名) - ランク:
np.linalg.matrix_rank(変数名) - これらは複雑な計算処理が必要なため、専用の
linalg(Linear Algebra) モジュール内の関数として提供されています。
- 逆行列:
