用 numpy 批量点积?
Batch dot product with numpy?
我需要用一个向量计算多个向量的点积。示例代码:
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]
如何在不迭代的情况下得到这个?谢谢!
在没有 for
循环的情况下使用 numpy.dot
或 numpy.matmul
:
import numpy as np
np.matmul(b, a)
# or
np.dot(b, a)
输出:
array([ 5, 17, 2, 0])
我会做@
b@a
Out[108]: array([ 5, 17, 2, 0])
我需要用一个向量计算多个向量的点积。示例代码:
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]
如何在不迭代的情况下得到这个?谢谢!
在没有 for
循环的情况下使用 numpy.dot
或 numpy.matmul
:
import numpy as np
np.matmul(b, a)
# or
np.dot(b, a)
输出:
array([ 5, 17, 2, 0])
我会做@
b@a
Out[108]: array([ 5, 17, 2, 0])