numpy - 沿轴的点积的总和

时间:2017-02-18 19:37:26

标签: python numpy scipy matrix-multiplication dot-product

我有一个A x B数组和另一个D x A x A数组,我正在努力想出有效的方法来计算沿D轴的两个数组的点积的总和(这样结果将是A x B数组。最明显的方法是使用for循环:

result = np.zeros(first_array.shape)
for d in range(0,second_array.shape[0]):
    result = result + np.dot(second_array[d], first_array)
print result

我想知道是否有更有效的方法来计算这个numpy。我已经读了np.einsum但不幸的是我不完全明白它是否能够在这种情况下提供帮助。

1 个答案:

答案 0 :(得分:3)

dot

您的k表示为(In [438]: np.einsum('jk,km->jm',np.ones((3,3)),np.ones((3,4))) Out[438]: array([[ 3., 3., 3., 3.], [ 3., 3., 3., 3.], [ 3., 3., 3., 3.]]) 在第一个和第二个的第二个到最后一个之间共享):

i

result添加到第一个数组会匹配其3d形状。但是从einsum中省略它会告诉In [439]: np.einsum('ijk,km->ijm',np.ones((2,3,3)),np.ones((3,4))).shape Out[439]: (2, 3, 4) 对其值进行求和。没有总结

    'email.required' => 'Er, you forgot your email address!',
    'email.unique' => 'Email already taken m8',