Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tính pseudo-inverse Moore-Penrose của stack ma trận trong Python

Để 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 ]]]