2010-07-09 5 views
11

Ich habe versucht, die Eigenwerte einer Matrix multipliziert mit seiner Transponierung zu finden, aber ich konnte es nicht mit numpy tun.Numpy Transponieren Multiplikation Problem

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

ich erwartet hatte folgendes Ergebnis für das Produkt zu erhalten:

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

und Eigenwerte:

0.0000 
0.0000 
0.3929 
203.6071 

Statt ValueError: shape mismatch: objects cannot be broadcast to a single shape habe ich, wenn testmatrix mit ihrer Transponierten multipliziert wird.

Dies funktioniert (die Multiplikation, nicht der Code) in MatLab, aber ich muss es in einer Python-Anwendung verwenden.

Kann mir jemand sagen, was ich falsch mache?

Antwort

12

Sie könnten diese tutorial nützlich finden, da Sie MATLAB kennen.

Versuchen Sie auch, testmatrix mit der dot() Funktion multipliziert, das heißt numpy.dot(testmatrix,testmatrix.T)

Offenbar numpy.dot zwischen Arrays für die Matrixmultiplikation verwendet wird! Der Operator * dient zur elementweisen Multiplikation (.* in MATLAB).

+1

PEP 465 ermöglicht die Verwendung der Infix '@' Operator: 'Mat1 @ Mat2' – BallpointBen

2

Sie verwenden elementweise Multiplikation - der Operator * auf zwei Numpy-Matrizen entspricht dem Operator .* in Matlab. Verwenden Sie

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