如何有效地获得点积的总和
A = np.random.rand(20,200)
x= np.random.rand(20)
y= np.random.rand(20)
num= np.zeros(20)
for i in range (A.shape[0]):
num[i] = np.sum(A.T[i,:].dot(x[i]+y[i]))
print num
有没有办法在没有for循环的情况下找到num
答案 0 :(得分:1)
您可以使用np.einsum
-
num = np.einsum('ji,i->i',A[:,:20],x+y)
需要对[:,:20]
进行切片,因为即使您使用A.T
A.T[i,:]
的{{1}}行进行迭代,也就是A
列,您不会遍历所有那些专栏。