Numpy transpose multiplication problem
Question:
I tried to find the eigenvalues of a matrix multiplied by its transpose but I couldn’t do it using numpy.
testmatrix = numpy.array([[1,2],[3,4],[5,6],[7,8]])
prod = testmatrix * testmatrix.T
print eig(prod)
I expected to get the following result for the product:
5 11 17 23
11 25 39 53
17 39 61 83
23 53 83 113
and eigenvalues:
0.0000
0.0000
0.3929
203.6071
Instead I got ValueError: shape mismatch: objects cannot be broadcast to a single shape
when multiplying testmatrix
with its transpose.
This works (the multiplication, not the code) in MatLab but I need to use it in a python application.
Can someone tell me what I’m doing wrong?
Answers:
You’re using element-wise multiplication – the *
operator on two Numpy matrices is equivalent to the .*
operator in Matlab. Use
prod = numpy.dot(testmatrix, testmatrix.T)
You can also write
[email protected]
I tried to find the eigenvalues of a matrix multiplied by its transpose but I couldn’t do it using numpy.
testmatrix = numpy.array([[1,2],[3,4],[5,6],[7,8]])
prod = testmatrix * testmatrix.T
print eig(prod)
I expected to get the following result for the product:
5 11 17 23
11 25 39 53
17 39 61 83
23 53 83 113
and eigenvalues:
0.0000
0.0000
0.3929
203.6071
Instead I got ValueError: shape mismatch: objects cannot be broadcast to a single shape
when multiplying testmatrix
with its transpose.
This works (the multiplication, not the code) in MatLab but I need to use it in a python application.
Can someone tell me what I’m doing wrong?
You’re using element-wise multiplication – the *
operator on two Numpy matrices is equivalent to the .*
operator in Matlab. Use
prod = numpy.dot(testmatrix, testmatrix.T)
You can also write
[email protected]