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