Как сделать точечное произведение вектора с набором векторов в массиве, используя numpy? - PullRequest
0 голосов
/ 10 марта 2019

Учитывая массив N by M W и вектор V размера N, как мне взять скалярное произведение V с каждым столбцом W, в результате получим одномерный массив D размера M с каждым элементом D, состоящим из скалярного произведения V и W [:, i].

Так что-то вроде

V = np.random.int(N)
W = np.random.int((N,M))
D = np.zeros(M)
for i in np.arange(M):
    D[i] = dotproduct(V,W[:,i])

Есть ли способ сделать это, используя только массивы и функции? Я хочу избегать использования для циклов.

Ответы [ 2 ]

1 голос
/ 10 марта 2019

Использование np.dot()

v = np.random.randint(3,size = 3)
w =np.random.randint(9, size = (3,3))
np.dot(v,w)
0 голосов
/ 10 марта 2019

Используя цифровую трансляцию, вы можете просто умножить вектор V и матрицу W

V = np.random.randint(N)
W = np.random.randint((N,M))
D = np.sum(V.T*W,axis=0)
...