क्या कोई तरीका है जिसे मैं पाइथन में यादृच्छिक ऑर्थोनॉर्मल मैट्रिक्स बनाने के लिए कॉल कर सकता हूं? शायद numpy का उपयोग कर? या कई numpy तरीकों का उपयोग कर एक ऑर्थोनॉर्मल मैट्रिक्स बनाने का कोई तरीका है? धन्यवाद।पायथन numpy में यादृच्छिक orthonormal मैट्रिक्स कैसे बनाएँ
उत्तर
यह rvs
विधि https://github.com/scipy/scipy/pull/5622/files से खींच लिया, कम से कम परिवर्तन के साथ है - योग्य स्वतंत्र numpy समारोह के रूप में चलाने के लिए पर्याप्त।
import numpy as np
def rvs(dim=3):
random_state = np.random
H = np.eye(dim)
D = np.ones((dim,))
for n in range(1, dim):
x = random_state.normal(size=(dim-n+1,))
D[n-1] = np.sign(x[0])
x[0] -= D[n-1]*np.sqrt((x*x).sum())
# Householder transformation
Hx = (np.eye(dim-n+1) - 2.*np.outer(x, x)/(x*x).sum())
mat = np.eye(dim)
mat[n-1:, n-1:] = Hx
H = np.dot(H, mat)
# Fix the last sign such that the determinant is 1
D[-1] = (-1)**(1-(dim % 2))*D.prod()
# Equivalent to np.dot(np.diag(D), H) but faster, apparently
H = (D*H.T).T
return H
यह वॉरेन परीक्षण से मेल खाता है, https://stackoverflow.com/a/38426572/901925
एससीपीई के संस्करण 0.18 में scipy.stats.ortho_group
और scipy.stats.special_ortho_group
है। पुल अनुरोध जहां यह जोड़ा गया है https://github.com/scipy/scipy/pull/5622
उदाहरण के लिए है,
In [24]: from scipy.stats import ortho_group # Requires version 0.18 of scipy
In [25]: m = ortho_group.rvs(dim=3)
In [26]: m
Out[26]:
array([[-0.23939017, 0.58743526, -0.77305379],
[ 0.81921268, -0.30515101, -0.48556508],
[-0.52113619, -0.74953498, -0.40818426]])
In [27]: np.set_printoptions(suppress=True)
In [28]: m.dot(m.T)
Out[28]:
array([[ 1., 0., -0.],
[ 0., 1., 0.],
[-0., 0., 1.]])
आप एक यादृच्छिक n x n
orthogonal मैट्रिक्स Q
, (समान रूप से n x n
orthogonal मैट्रिक्स के कई गुना पर वितरित) तत्वों के साथ एक n x n
मैट्रिक्स की एक QR
गुणन प्रदर्शन से प्राप्त कर सकते हैं i.i.d. गॉसियन यादृच्छिक चर के औसत 0
और भिन्नता 1
। यहाँ एक उदाहरण है:
import numpy as np
from scipy.linalg import qr
n = 3
H = np.random.randn(n, n)
Q, R = qr(H)
print (Q.dot(Q.T))
[[ 1.00000000e+00 -2.77555756e-17 2.49800181e-16] [ -2.77555756e-17 1.00000000e+00 -1.38777878e-17] [ 2.49800181e-16 -1.38777878e-17 1.00000000e+00]]
अगर आप चाहते हैं एक कोई भी orthonormal स्तंभ वैक्टर के साथ वर्ग मैट्रिक्स आपको वर्ग में उल्लेख किया विधि से किसी के साथ एक बना सकते हैं और कुछ कॉलम ड्रॉप कर सकते हैं।
- 1. बढ़ते मैट्रिक्स NumPy
- 2. यादृच्छिक मैट्रिक्स गणना
- 3. एक 2D numpy मैट्रिक्स
- 4. numpy मैट्रिक्स गुणा आकार
- 5. एक numpy मैट्रिक्स
- 6. पायथन/numpy/scipy में कम विसंगति अर्ध-यादृच्छिक अनुक्रम उत्पन्न?
- 7. बेवकूफ: एन-अलग मैट्रिक्स में यादृच्छिक रूप से विभाजित/मैट्रिक्स का चयन कैसे करें
- 8. एक यादृच्छिक pacman भूलभुलैया कैसे बनाएँ
- 9. Numpy/पायथन: इनपुट मैट्रिक्स की कार्तीय उत्पाद के गुणन के रूप में कुशल मैट्रिक्स
- 10. पायथन यादृच्छिक नहीं है
- 11. NumPy यादृच्छिक बीज अलग यादृच्छिक संख्या
- 12. पायथन numpy sort eigenvalues
- 13. मैट्रिक्स कॉलम का यादृच्छिक चयन
- 14. पायथन में यादृच्छिक दशमलव
- 15. पायथन में matplotlib के साथ मैनहट्टन साजिश कैसे बनाएँ?
- 16. पायथन/numpy में सुरुचिपूर्ण ग्रिड खोज
- 17. पायथन 3-numpy: numpy savetxt
- 18. पायथन: numpy
- 19. numpy में एक बुलियन मैट्रिक्स कैसे डंप करने के लिए?
- 20. एक numpy मैट्रिक्स में न्यूनतम मान कैसे खोजें?
- 21. numpy
- 22. मैं पायथन में यादृच्छिक संख्या कैसे उत्पन्न कर सकता हूं?
- 23. मुझे पायथन में एक numpy मैट्रिक्स की लंबाई (या आयाम, आकार) कैसे मिल सकता है?
- 24. पायथन - डेटा-मैट्रिक्स
- 25. मैं ब्लॉक को ब्लॉकडागोनल मैट्रिक्स (NumPy)
- 26. निमफा (पायथन मैट्रिक्स फैक्टरेशन लाइब्रेरी)
- 27. पायथन: यादृच्छिक। शफल क्यों सरणी
- 28. पायथन में मैट्रिक्स गुणा को कैसे बढ़ाया जाए?
- 29. पायथन: numpy float array
- 30. पाइथन का यादृच्छिक मॉड्यूल Numpy के यादृच्छिक मॉड्यूल
आपकी प्रतिक्रिया के लिए धन्यवाद। मैंने देखा है कि दिए गए उत्तर स्क्वायर मैट्रिस के लिए हैं। क्या मैं अभी भी डी एक्स के मैट्रिक्स प्राप्त करने के लिए इस विधि का उपयोग कर सकता हूं, जहां k
Dacion