пакетный попарный точечный продукт с использованием numpy

У меня есть две партии векторов: W= [w1,w2, w3,...]

и

V= [v1,v2,v3,...].

Обе партии выражены в двухмерных векторах numpy [[x1, y1], [x2, y2]...]

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

[ w1.v1 , w1.v2 , w1.v3,...

w2.v1 , w2.v2 , w2.v3,...

w3.v1 , w3.v2 , w3.v3,...

....................................... ]

если w и v простые скаляры, то это легко.

Но проблема в том, что w и v являются одномерными векторами: [x, y]

Как мне реализовать это в numpy?

Спасибо


person Abel Tan    schedule 24.05.2020    source источник
comment
Отвечает ли это на ваш вопрос? точечный продукт Numpy   -  person sushanth    schedule 24.05.2020
comment
Для меня это выглядит как простое умножение матриц.   -  person Paul Panzer    schedule 24.05.2020


Ответы (1)


Предполагая, что вы хотите вычислить точечные произведения векторов-строк,

np.einsum('ji,ki-> jk', V, W)

Если векторы-столбцы

np.einsum('ij,ik-> jk', V, W)
person Igor Rivin    schedule 24.05.2020
comment
привет, я нуб в Суммировании Эйнштейна. Что вы подразумеваете под векторами-столбцами и строками? - person Abel Tan; 24.05.2020
comment
@AbelTan у вас есть массив [[a, b, c], [d, e, f]] и еще один [[x, y, z], [w, s, t]] Является ли ваш результат массивом 3x3 (так что вы берете скалярные произведения столбцов исходных массивов( или 2x2 (так вы берете скалярные произведения строк)? В последнем случае работает первый рецепт, в первом - второй. - person Igor Rivin; 24.05.2020
comment
это массив 3x3, так что я беру второй рецепт? - person Abel Tan; 24.05.2020