Я пытался найти собственные значения матрицы умноженными на транспонировать, но я не мог сделать этого с помощью 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.
Кто-то может сказать мне, что я делаю неправильно?
Возможно, вам пригодится этот учебник, раз вы знаете MATLAB.
Также попробуйте умножить testmatrix
с помощью функции dot()
, т.е. numpy.dot(testmatrix,testmatrix.T)
Очевидно, numpy.dot
используется между массивами для умножения матриц! Оператор *
предназначен для поэлементного умножения (.*
в MATLAB).
Вы используете поэлементное умножение - оператор *
для двух матриц Numpy эквивалентен оператору . *
в Matlab. Используйте
prod = numpy.dot(testmatrix, testmatrix.T)