【Python入門】行列の階数|rank()関数を学ぶ

行列の階数|rank()関数を学ぶ_アイキャッチ プログラミング

※ 当サイトはアフィリエイト広告を利用しています。

levtech-ad
スポンサーリンク

行列の階数は、Pythonで簡単に確認することができます。

本記事では、Pythonを使用した行列の階数の確認方法について、詳しくご説明します。

こんな人に読んでほしい
  • Python初心者の人
  • Pythonを使用した行列の階数の確認方法について学びたい人
levtech-ad

行列の階数

線形変換によるベクトル空間の写像の次元を、行列の階数(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(テックアカデミー)がおすすめです。

私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。

現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。

無料体験ができますので、まずは試してみてください!

\まずは無料体験!/
スポンサーリンク
タイトルとURLをコピーしました