我想做一系列点积。即
for i in range(N[0]):
for j in range(N[1]):
kr[i,j] = dot(k[i,j,:], r[i,j,:])
是否有矢量化方法来执行此操作,例如使用einsum或tensordot?
答案 0 :(得分:5)
假设N[0]
和N[1]
是k
和r
的前两个维度的长度,
kr = numpy.einsum('...i,...i->...', k, r)
我们指定...
启用广播,并沿最后一个轴执行点积。
答案 1 :(得分:1)
假设k
和r
有三个维度,则与以下内容相同:
kr = numpy.sum(k * r, axis=-1)