A and B
都是数组shape(N,3)
。它们各自包含 N 个向量,使得A[0] = a0 (vector), A[1] = a1...
and B[0] = b0, B[1] = b1...
我想计算 N 对向量 an 和 bn 的点积。换句话说,我想获得一个数组 Cshape(N,1)
这样C[i] = np.dot(A[i],B[i]).
在 python 中执行此操作最有效的方法是什么(例如使用矢量化代码)?
您可以执行逐元素乘法,然后沿第二个轴求和,如下所示 -
C = (A*B).sum(1)
这些乘法和求和运算可以一次性实现np.einsum http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.einsum.html,就像这样-
C = np.einsum('ij,ij->i',A,B)
With np.matmul https://numpy.org/doc/stable/reference/generated/numpy.matmul.html/@-operator
-
(A[:,None,:] @ B[...,None]).ravel()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)