NumPy का numpy.linalg.pinv() फंक्शन मैट्रिक्स या मैट्रिक्स के स्टैक का मूर-पेनरोज़ सूडोइनवर्स (Moore-Penrose pseudoinverse) निकालता है। यह सिंगुलर वैल्यू डीकंपोजिशन (SVD) का उपयोग करता है और गैर-वर्ग या सिंगुलर मैट्रिक्स के लिए भी काम करता है।
सिंटैक्स और पैरामीटर्स
numpy.linalg.pinv(a, rcond=1e-15, hermitian=False)
- a: मैट्रिक्स या मैट्रिक्स का स्टैक (..., M, N) आकार का।
- rcond: छोटे सिंगुलर मानों के लिए कटऑफ। डिफ़ॉल्ट 1e-15।
- hermitian: यदि True, मैट्रिक्स हर्मिटियन माना जाता है (तेज़ गणना)।
- वापसी: सूडोइनवर्स, आकार (..., N, M)।
मूर-पेनरोज़ सूडोइनवर्स के गुण
मैट्रिक्स A के लिए सूडोइनवर्स A⁺ निम्न शर्तें पूरी करता है:
A A⁺ A = AA⁺ A A⁺ = A⁺(A A⁺)ᴴ = A A⁺(हर्मिटियन)(A⁺ A)ᴴ = A⁺ A(हर्मिटियन)
उदाहरण: 3 मैट्रिक्स का स्टैक
import numpy as np
# 3 मैट्रिक्स का स्टैक: आकार (3, 2, 2)
arr = np.array([
[[1, 2], [3, 4]], # मैट्रिक्स 1
[[1, 2], [2, 1]], # मैट्रिक्स 2
[[1, 3], [3, 1]] # मैट्रिक्स 3
])
print("मूल स्टैक आकार:", arr.shape)
print("मैट्रिक्स 1:\n", arr[0])
print("मैट्रिक्स 2:\n", arr[1])
print("मैट्रिक्स 3:\n", arr[2])
# स्टैक का सूडोइनवर्स
pinv_stack = np.linalg.pinv(arr)
print("\nसूडोइनवर्स स्टैक आकार:", pinv_stack.shape)
print("सूडोइनवर्स 1:\n", pinv_stack[0])
print("सूडोइनवर्स 2:\n", pinv_stack[1])
print("सूडोइनवर्स 3:\n", pinv_stack[2])
आउटपुट
मूल स्टैक आकार: (3, 2, 2)
मैट्रिक्स 1:
[[1 2]
[3 4]]
मैट्रिक्स 2:
[[1 2]
[2 1]]
मैट्रिक्स 3:
[[1 3]
[3 1]]
सूडोइनवर्स स्टैक आकार: (3, 2, 2)
सूडोइनवर्स 1:
[[-2. 1. ]
[ 1.5 -0.5]]
सूडोइनवर्स 2:
[[-0.33333333 0.66666667]
[ 0.66666667 -0.33333333]]
सूडोइनवर्स 3:
[[-0.125 0.375]
[ 0.375 -0.125]]
सत्यापन
# प्रत्येक मैट्रिक्स के लिए A @ A⁺ @ A ≈ A जांचें
for i in range(3):
A = arr[i]
A_pinv = pinv_stack[i]
check = A @ A_pinv @ A
print(f"मैट्रिक्स {i+1}: A @ A⁺ @ A ≈ A ? {np.allclose(check, A)}")
pinv बनाम inv
| विशेषता | inv() | pinv() |
|---|---|---|
| आवश्यकता | वर्ग, नॉन-सिंगुलर | कोई भी आकार, सिंगुलर भी |
| विधि | LU डीकंपोजिशन | SVD |
| गति | तेज़ | धीमी |
| आउटपुट आकार | (N, N) | (N, M) |