点积的总和有效率高

时间:2017-05-10 20:16:38

标签: python numpy vectorization

如何有效地获得点积的总和

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

1 个答案:

答案 0 :(得分:1)

您可以使用np.einsum -

num = np.einsum('ji,i->i',A[:,:20],x+y)

需要对[:,:20]进行切片,因为即使您使用A.T A.T[i,:]的{​​{1}}行进行迭代,也就是A列,您不会遍历所有那些专栏。