Проблема переноса множественности чисел
Я попытался найти собственные значения матрицы, умноженной на ее транспонирование, но я не мог сделать это с помощью numpy.
testmatrix = numpy.array([[1,2],[3,4],[5,6],[7,8]])
prod = testmatrix * testmatrix.T
print eig(prod)
Я ожидал получить следующий результат для продукта:
5 11 17 23
11 25 39 53
17 39 61 83
23 53 83 113
и собственные значения:
0.0000
0.0000
0.3929
203.6071
Вместо этого я получил ValueError: shape mismatch: objects cannot be broadcast to a single shape
при умножении testmatrix
на его транспонирование.
Это работает (умножение, а не код) в MatLab, но мне нужно использовать его в приложении python.
Может кто-нибудь сказать мне, что я делаю неправильно?
Ответы
Ответ 1
Вы можете найти этот учебник полезным, так как вы знаете MATLAB.
Также попробуйте умножить testmatrix
на функцию dot()
, т.е. numpy.dot(testmatrix,testmatrix.T)
По-видимому numpy.dot
используется между массивами для матричного умножения! Оператор *
предназначен для элементарного умножения (.*
в MATLAB).
Ответ 2
Вы используете умножение по типу - оператор *
на двух матрицах Numpy эквивалентен оператору .*
в Matlab. Используйте
prod = numpy.dot(testmatrix, testmatrix.T)