如何使用numpy的einsum来获取子阵列的点积?

时间:2015-05-09 18:54:19

标签: python arrays numpy numpy-einsum

我有一个包含3个轴的数组:

a = [[[1,2,3], [4,5,6], [7,8,9]], 
     [[9,8,7], [6,5,4], [3,2,1]],
     [[1,1,1], [2,2,2], [3,3,3]]]

我想使用einsum非迭代地将每个向量的点积取在' a'用矩阵:

m = [[a, b, c],
     [d, e, f],
     [g, h, i]]
像这样

product = [[dot(m,a[1,1,:]), dot(m,a[1,2,:]), dot(m,a[1,3,:])],
           [dot(m,a[2,1,:]), dot(m,a[2,2,:]), dot(m,a[2,3,:])],
           [dot(m,a[3,1,:]), dot(m,a[3,2,:]), dot(m,a[3,3,:])]]

获得一个与初始数组相同形状的数组' a'。我一直试图使用einsum,但我无法让它运转起来。

1 个答案:

答案 0 :(得分:2)

这应该可以解决问题,假设您使用m的最后一个'{1}}'点''的最后一个维度:

a