Проблема переноса множественности чисел

Я попытался найти собственные значения матрицы, умноженной на ее транспонирование, но я не мог сделать это с помощью 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)