【毎日Python】Pythonで単位行列を作成する方法|numpy.identity,eye

identity
毎日Python/こつこつPython

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.]])