Пакетная точка продукта с NumPy? - PullRequest
0 голосов
/ 18 июня 2019

Мне нужно получить скалярное произведение многих векторов с одним вектором.Пример кода:

a = np.array([0, 1, 2])

b = np.array([
    [0, 1, 2],
    [4, 5, 6],
    [-1, 0, 1],
    [-3, -2, 1]
])

Я хотел бы получить скалярное произведение каждой строки b против a.Я могу повторить:

result = []
for row in b:
    result.append(np.dot(row, a))

print(result)

, что дает:

[5, 17, 2, 0]

Как я могу получить это без итерации?Спасибо!

Ответы [ 2 ]

2 голосов
/ 18 июня 2019

Я просто сделаю @

b@a
Out[108]: array([ 5, 17,  2,  0])
1 голос
/ 18 июня 2019

Используйте numpy.dot или numpy.matmul без for петли:

import numpy as np

np.matmul(b, a)
# or
np.dot(b, a)

Выход:

array([ 5, 17,  2,  0])
...