numpy的批量点乘?

g9icjywg  于 2023-03-02  发布在  其他
关注(0)|答案(3)|浏览(91)

我需要得到一个向量与多个向量的点积。示例代码:

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]
我怎样才能不经过迭代就得到这个呢?谢谢!

kkbh8khc

kkbh8khc1#

使用numpy.dot或不带for循环的numpy.matmul

import numpy as np

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

输出:

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

eeq64g8w2#

我只做@

b@a
Out[108]: array([ 5, 17,  2,  0])
mv1qrgav

mv1qrgav3#

如果需要将两个向量数组逐行相乘,则该函数非常有用

np.sum(a * b, axis=1)

相关问题