2010-07-09 15 views
11

मैंने अपने ट्रांसपोज़र द्वारा गुणा मैट्रिक्स के eigenvalues ​​खोजने की कोशिश की लेकिन मैं numpy का उपयोग कर ऐसा नहीं कर सका।नकली गुणा गुणात्मक समस्या

5 11 17 23 
11 25 39 53 
17 39 61 83 
23 53 83 113 

और eigenvalues:

0.0000 
0.0000 
0.3929 
203.6071 

इसके बजाय मैं ValueError: shape mismatch: objects cannot be broadcast to a single shape मिला जब अपने पक्षांतरित साथ testmatrix गुणा

testmatrix = numpy.array([[1,2],[3,4],[5,6],[7,8]]) 
prod = testmatrix * testmatrix.T 
print eig(prod) 

मैं उत्पाद के लिए निम्नलिखित परिणाम प्राप्त करने की उम्मीद है।

यह मैटलैब में काम करता है (गुणा, कोड नहीं) लेकिन मुझे इसे एक अजगर आवेदन में उपयोग करने की आवश्यकता है।

क्या कोई मुझे बता सकता है कि मैं क्या गलत कर रहा हूं?

उत्तर

12

आपको यह tutorial उपयोगी मिल सकता है क्योंकि आप MATLAB जानते हैं।

इसके अलावा, dot() समारोह के साथ testmatrix गुणा कोशिश अर्थात numpy.dot(testmatrix,testmatrix.T)

जाहिर numpy.dot आव्यूह गुणन के लिए सरणियों के बीच प्रयोग किया जाता है! * ऑपरेटर तत्व-वार गुणा के लिए है (MATLAB में .*)।

+1

पीईपी 465 इन्फिक्स '@' ऑपरेटर के उपयोग की अनुमति देता है: 'mat1 @ mat2' – BallpointBen

2

आप तत्व-वार गुणा का उपयोग कर रहे हैं - * ऑपरेटर दो नम्पी मैट्रिस पर .* ऑपरेटर के अनुरूप मैटलैब में है।

prod = numpy.dot(testmatrix, testmatrix.T)