Python / Numpy Как это называется / как вы представляете ту операцию, где вы умножаете каждый элемент на два вектора? - PullRequest
5 голосов
/ 19 апреля 2011

Например, предположим, что у меня есть:

x = array([1, 2, 3])
y = array([4, 5, 6])

Стандартное "умножение массива" в python делает z = x * y = array([4, 10, 18]).В Matlab, чтобы получить тот же эффект, вы делаете *.IIRC.

Как называется эта операция и какой символ используется для ее представления?

Ответы [ 4 ]

6 голосов
/ 19 апреля 2011

Это произведение Адамара, представленное с открытым кружком: http://en.wikipedia.org/wiki/Matrix_multiplication#Hadamard_product

1 голос
/ 19 апреля 2011

На самом деле есть три разных способа умножить все элементы двух векторов.

Первый, внутренний или точечный продукт , возвращает скаляр.

Второй, кросс-произведение , возвращает вектор.

Третье, тензорное произведение , возвращает тензор второго порядка.

Я уверен, что вы имеете в виду первое, потому что оно знакомо большинству людей, но я подумал, что было бы хорошо опубликовать это ради полноты.

1 голос
/ 19 апреля 2011

Мне кажется, вы после выражения S = sum_i (x_i * y_i)?Это называется внутренним продуктом.Из пустой документации:

from numpy import *
x = array([1,2,3])
y = array([2,2,2])
inner(x,y)          <-- Should give 1*2 + 2*2 + 3*2 = 12

Операция, которую вы проиллюстрировали, и то, что вы получаете. * В matlab, называется продуктом Шура / Адамара, часто в качестве символа используется небольшой открытый кружок.Поскольку это то, что вы получаете с помощью обычного оператора * в numpy, я сомневаюсь, что есть отдельная функция Шура.

0 голосов
/ 19 апреля 2011

Не уверен, о чем ты спрашиваешь.Тем не менее, в MATLAB x * y является , называемым матричным умножением, а x. * Y является , называемым умножением массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...