Numpy две матрицы, попарное точечное произведение строк [дубликаты]

В настоящее время мы работаем над проектом Python, и нам приходится много векторизовать из-за ограничений производительности. В итоге мы получаем следующий расчет: у нас есть два массива numpy формы (20,6) и мы хотим вычислить попарное скалярное произведение строк, т.е. мы должны получить в конце матрицу (20,1), где каждая строка является скаляром, полученным соответствующим вектором точечное умножение.


person Sleik    schedule 25.12.2016    source источник
comment
Да и какой у тебя вопрос? С какой проблемой вы столкнулись при попытке сделать это?   -  person Jean-François Corbett    schedule 25.12.2016


Ответы (1)


Вы можете умножать два массива на элементы, а затем суммировать по строкам, и тогда у вас есть массив, в котором каждый элемент является точечным произведением строк двух исходных массивов:

a = np.array([[1,2], [3,4]])
b = np.array([[3,4], [2,1]])

(a * b).sum(axis=1)
# array([11, 10])
person Psidom    schedule 25.12.2016
comment
Вот и получилось, спасибо! - person Sleik; 25.12.2016