Вычисление вектора с его транспонированным вектором

Я работаю над расчетом для разброса внутри матрицы, где у меня есть вектор 50x20, и что-то, что случилось со мной, это то, что умножение транспонированных векторов на исходный вектор дает мне ошибку измерения, говоря следующее:

операнды не могут транслироваться вместе с фигурами (50,20) (20,50)

Я пробовал: array = my_array * my_array_transposed и получил вышеупомянутую ошибку.

Альтернатива заключалась в следующем:

new_array = np.dot(my_array,  np.transpose(my_array))

В Octave, например, это было бы намного проще, но из-за размера вектора мне довольно сложно подтвердить основную истину, если это способ сделать следующий расчет:

Потому что, насколько я знаю, есть кое-что, связанное с тем, является ли умножение поэлементным.

У меня вопрос: правильно ли я применяю эту формулу? Если нет, как правильно умножить транспонированный вектор на неперемещенный вектор?

1 ответ

Решение

Да, np.dotформула правильная. Если вы напишетеarray = my_array * my_array_transposedвы просите Python выполнить покомпонентное умножение. Вместо этого вам нужно умножение по столбцам, которое достигается в numpy с помощьюnp.dot.

Другие вопросы по тегам