2010-07-09 12 views
11

Intenté encontrar los valores propios de una matriz multiplicados por su transposición, pero no pude hacerlo usando numpy.Numpy problema de multiplicación de transposición

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

me espera para obtener el siguiente resultado para el producto:

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

y valores propios:

0.0000 
0.0000 
0.3929 
203.6071 

En cambio me dieron ValueError: shape mismatch: objects cannot be broadcast to a single shape al multiplicar testmatrix con su transpuesta.

Esto funciona (la multiplicación, no el código) en MatLab pero necesito usarlo en una aplicación de Python.

¿Alguien me puede decir lo que estoy haciendo mal?

Respuesta

12

Puede encontrar este tutorial útil ya que conoce MATLAB.

Además, trate de multiplicar testmatrix con la función dot(), es decir numpy.dot(testmatrix,testmatrix.T)

Al parecer numpy.dot se utiliza entre arreglos para la multiplicación de matrices! El operador * es para la multiplicación de elementos (.* en MATLAB).

+1

PEP 465 permite el uso del operador infijo '@': 'mat1 @ mat2' – BallpointBen

2

Está utilizando la multiplicación de elementos: el operador * en dos matrices Numpy es equivalente al operador .* en Matlab. Use

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