スポンサーリンク
行列の階数は、Pythonで簡単に確認することができます。
本記事では、Pythonを使用した行列の階数の確認方法について、詳しくご説明します。
行列の階数
線形変換によるベクトル空間の写像の次元を、行列の階数(rank)と呼びます。
行列の基本的な特性を表し、対応する線形写像の階数を表しています。
numpy.linalg.matrix_rank()
NumPyのnumpy.linalg.matrix_rank()を使用すると、引数に指定した行列の階数を確認することができます。
#input
import numpy as np
from numpy import linalg
A = np.array([[1, 0],
[0, 1]])
B = np.array([[1, 0, 0],
[0, 1, 0],
[0, 0, 1]])
A_rank = linalg.matrix_rank(A)
B_rank = linalg.matrix_rank(B)
print("Aのrank:{}".format(A_rank))
print("Bのrank:{}".format(B_rank))
#output
Aのrank:2
Bのrank:3
ランダムな行列の階数
上記関数を使用して、ランダムな4次正方行列の中で階数が3となる行列を確認してみます。
#input
import numpy as np
from numpy import linalg
np.random.seed(0)
for i in range(100):
a = np.random.randint(0, 10, (4, 4))
rank = linalg.matrix_rank(a)
if rank < 4:
print("rank(a) = {}\n{}\n".format(rank, a))
#output
rank(a) = 3
[[1 5 8 4]
[0 2 5 5]
[0 8 1 1]
[0 3 8 8]]
乱数seed(0)の場合、100個のうち1個が階数3でした。
乱数seedを変えてさらに確認してみます。
#input
import numpy as np
from numpy import linalg
np.random.seed(3)
for i in range(100):
a = np.random.randint(0, 10, (4, 4))
rank = linalg.matrix_rank(a)
if rank < 4:
print("rank(a) = {}\n{}\n".format(rank, a))
#output
rank(a) = 3
[[1 1 1 5]
[5 7 4 3]
[0 0 0 0]
[2 2 7 0]]
rank(a) = 3
[[5 0 2 7]
[5 0 1 6]
[3 5 1 4]
[1 2 3 4]]
まとめ
この記事では、Pythonを使用した行列の階数の確認方法について、ご説明しました。
本記事を参考に、ぜひ試してみて下さい。
参考
Python学習用おすすめ教材
Pythonの基本を学びたい方向け
リンク
統計学基礎を学びたい方向け
リンク
Pythonの統計解析を学びたい方向け
リンク
おすすめプログラミングスクール
Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。
私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。
現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。
無料体験ができますので、まずは試してみてください!
\まずは無料体験!/
スポンサーリンク