Numpy транспонируют проблему умножения

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

Кто-то может сказать мне, что я делаю неправильно?

19
задан Virgiliu 9 July 2010 в 13:38
поделиться

2 ответа

Возможно, вам пригодится этот учебник, раз вы знаете MATLAB.

Также попробуйте умножить testmatrix с помощью функции dot(), т.е. numpy.dot(testmatrix,testmatrix.T)

Очевидно, numpy.dot используется между массивами для умножения матриц! Оператор * предназначен для поэлементного умножения (.* в MATLAB).

22
ответ дан 30 November 2019 в 04:15
поделиться

Вы используете поэлементное умножение - оператор * для двух матриц Numpy эквивалентен оператору . * в Matlab. Используйте

prod = numpy.dot(testmatrix, testmatrix.T)
6
ответ дан 30 November 2019 в 04:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: