※このページではアフィリエイト広告を利用しています

【Python × NumPy入門】単位行列の作成方法と使い分け:eye、identity、diagの活用術

Python

Pythonで数値計算を行う際に欠かせないライブラリ「NumPy」には、行列やベクトルを簡単に扱う機能がたくさん用意されています。
この記事では、NumPyで単位行列(対角成分が1、それ以外が0の行列)を作成する方法について、代表的な3つの関数 eye()identity()diag() を使って紹介します。

この記事の対象

  • eye関数について知りたい方
  • identity関数について知りたい方
  • diag関数について知りたい方
スポンサーリンク
スポンサーリンク

単位行列とは?

数学や線形代数で登場する「単位行列(Identity Matrix)」は、対角成分がすべて1、その他がすべて0の正方行列です。

例えば、3×3の単位行列は以下のような形です。

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

この行列は、行列の掛け算で元の行列の値を変えない(単位元)という重要な性質を持ちます。

NumPyの eye() 関数で単位行列を作る

NumPyの eye() 関数は、任意のサイズの単位行列を作成できます。

基本構文

numpy.eye(N, M=None, k=0, dtype=float)
引数説明
N行数
M列数(省略時はNと同じ=正方行列)
k対角成分のオフセット(0で主対角、+1で上、-1で下)
dtypeデータ型(int, floatなど)

使用例

import numpy as np

matrix = np.eye(5, dtype=int)
print(matrix)

出力結果

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

これは5×5の整数型の単位行列です。

eye() の応用:対角の位置を変えてみよう

k 引数を使うと、対角の位置をずらすことができます。

np.eye(4, k=1)

出力例(上側の対角)

[[0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]
 [0. 0. 0. 0.]]
np.eye(4, k=-1)

出力例(下側の対角)

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

identity() 関数との違いと使い分け

identity() 関数も単位行列を作るための関数ですが、正方行列専用です。

使用例

import numpy as np

matrix = np.identity(4)
print(matrix)

出力

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

eye() と identity() の違い

関数名列数Mの指定対角の位置変更用途例
eye可(長方形OK)可(k引数)特定の位置に1を配置したい場合
identity不可(正方のみ)不可シンプルな単位行列がほしいとき

diag() 関数:任意の対角成分を持つ行列

diag() 関数は、任意の対角成分を持つ対角行列を作成できます。

使用例

import numpy as np

d_matrix = np.diag([10, 20, 30])
print(d_matrix)

出力

[[10  0  0]
 [ 0 20  0]
 [ 0  0 30]]

用途例

  • エラーの分散を表す共分散行列
  • 対角成分に特定のスカラー値を並べたいとき

単位行列を使う場面は?

活用シーン説明
線形代数行列の逆行列・固有値分解の基礎
機械学習行列演算や初期化に使用される
数値計算正規方程式(Ax = b)の解法
プログラムの検証出力の正しさを確認するための基準として

よくあるエラーと対処法

エラー内容原因対策
TypeError: 'float' object cannot be interpreted as an integereye()の引数に小数を指定している引数を整数にする
ValueError: negative dimensions are not allowed負の値をNやMに指定正の整数に修正する
UnicodeDecodeErrorなど関係なし(dtype指定ミスなど)dtype=int or dtype=floatを明示的に指定

まとめ:eye, identity, diagの使い分け

機能関数特徴
単位行列eye()正方行列・長方行列の両方対応、対角位置も調整可能
単位行列(簡易)identity()シンプルで正方形のみ
対角行列diag()任意の値を対角に設定できる

NumPyを使えば、これらの行列を1行のコードで簡単に生成できます。数学的な処理やデータ分析で頻繁に使われるので、ぜひ覚えておきましょう!

関連記事

タイトルとURLをコピーしました