Để tính pseudo-inverse Moore-Penrose của một stack (chồng) ma trận, dùng numpy.linalg.pinv(). Sử dụng phân rã giá trị kỳ dị (SVD), giữ các giá trị kỳ dị lớn. Tham số rcond cắt ngưỡng giá trị kỳ dị nhỏ.
Tham số
- a (array_like): Ma trận hoặc stack ma trận cần pseudo-inverse.
- rcond (float, tùy chọn): Ngưỡng cắt giá trị kỳ dị nhỏ. Mặc định dựa trên epsilon.
- hermitian (bool, tùy chọn): Nếu True, giả định ma trận Hermitian để tính hiệu quả hơn.
Các bước thực hiện
Nhập NumPy, tạo stack 3 ma trận 2x2:
import numpy as np
arr = np.array([[[1, 2], [3, 4]],
[[1, 2], [2, 1]],
[[1, 3], [3, 1]]])
print("Mảng của chúng ta...\n", arr)
print("\nSố chiều...\n", arr.ndim)
print("\nKiểu dữ liệu...\n", arr.dtype)
print("\nHình dạng...\n", arr.shape)
# Tính pseudo-inverse
print("\nKết quả...\n", np.linalg.pinv(arr))
Ví dụ hoàn chỉnh
import numpy as np
arr = np.array([[[1, 2], [3, 4]],
[[1, 2], [2, 1]],
[[1, 3], [3, 1]]])
print("Mảng của chúng ta...\n", arr)
print("\nSố chiều...\n", arr.ndim)
print("\nKiểu dữ liệu...\n", arr.dtype)
print("\nHình dạng...\n", arr.shape)
print("\nKết quả...\n", np.linalg.pinv(arr))
Kết quả đầu ra
Mảng của chúng ta...
[[[1 2]
[3 4]]
[[1 2]
[2 1]]
[[1 3]
[3 1]]]
Số chiều...
3
Kiểu dữ liệu...
int64
Hình dạng...
(3, 2, 2)
Kết quả...
[[[-2. 1. ]
[ 1.5 -0.5 ]]
[[-0.33333333 0.66666667]
[ 0.66666667 -0.33333333]]
[[-0.125 0.375 ]
[ 0.375 -0.125 ]]]