Pythonで単位行列を作成する方法です。
使用するのは、Pythonのnumpyライブラリのidentity関数とeye関数です。
単位行列とは、対角線上の要素の値が全て1で、それ以外は全て0で構成された行列のことです。
import numpy as np
まず、itentity関数で単位行列を作成してみましょう。
引数に行列の数を指定して実行します。
列数5、行数5の、単位行列を作成することができました。
このように、1つ目の配列の第1要素から、右肩下がりに対角線が生成されます。
np.identity(5)
実行結果:
array([[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.]])
ちなみにidentity関数では、列数と行数をそれぞれ別に指定しようとすると、エラーが表示されます。
np.identity(3, 5)
実行結果:
TypeError: Cannot interpret '5' as a data type
したがって、列数と行数と別々に指定するには、eye関数を使用します。
eye関数の第一引数に行数、引数Mに列数を指定します。
また、引数kで対角線が始まる位置を指定することもできます。
2を指定すると、1つ目の配列の、3番目の要素から対角線が始まります。
実行してみましょう。
指定した通りに、単位行列を作成することができました。
np.eye(3, M=5, k=2)
実行結果:
array([[0., 0., 1., 0., 0.],
[0., 0., 0., 1., 0.],
[0., 0., 0., 0., 1.]])
また、identity関数のように、第一引数のみ指定すると、指定した整数で単位行列を作成することもできます。
np.eye(5)
実行結果:
array([[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.]])