Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หารังก์ของเมทริกซ์ที่ขาดรังก์ด้วย SVD ใน Python ด้วย numpy.linalg.matrix_rank()

เมธอด numpy.linalg.matrix_rank() คำนวณรังก์ของเมทริกซ์โดยใช้ Singular Value Decomposition (SVD) รังก์คือจำนวน singular values ที่มากกว่า threshold tol

พารามิเตอร์สำคัญ

  • A: อินพุตเวกเตอร์หรือสแต็กเมทริกซ์
  • tol (ไม่บังคับ): ค่าเกณฑ์ lower bound ของ SVD หาก None จะคำนวณจาก epsilon ของ dtype
  • hermitian (ไม่บังคับ): ถ้า True จะถือว่า A เป็น Hermitian เพื่อประสิทธิภาพ

ขั้นตอนการใช้งาน

import numpy as np
from numpy.linalg import matrix_rank

สร้างเมทริกซ์ identity 5x5 และตรวจสอบรังก์

arr = np.eye(5)
print("Our Array...\n", arr)
print("\nDimensions of our Array...\n", arr.ndim)
print("\nDatatype of our Array object...\n", arr.dtype)
print("\nShape of our Array object...\n", arr.shape)
print("\nRank...\n", matrix_rank(arr))

ทำให้เมทริกซ์ขาดรังก์ (rank-deficit) และตรวจสอบใหม่

arr[-1, -1] = 0.
print("\nUpdated Rank (Rank-Deficit Matrix)...\n", matrix_rank(arr))

โค้ดตัวอย่างสมบูรณ์

import numpy as np
from numpy.linalg import matrix_rank

arr = np.eye(5)
print("Our Array...\n", arr)
print("\nDimensions of our Array...\n", arr.ndim)
print("\nDatatype of our Array object...\n", arr.dtype)
print("\nShape of our Array object...\n", arr.shape)
print("\nRank...\n", matrix_rank(arr))
arr[-1, -1] = 0.
print("\nUpdated Rank (Rank-Deficit Matrix)...\n", matrix_rank(arr))

ผลลัพธ์ที่คาดหวัง

Our 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.]]
Dimensions of our Array...
2
Datatype of our Array object...
float64
Shape of our Array object...
(5, 5)
Rank...
5
Updated Rank (Rank-Deficit Matrix)...
4