2

我有一个带有 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,但我无法让它工作。

4

1 回答 1

2

m这应该可以解决问题,假设您用 的最后一个维度“点”最后一个维度a

np.einsum('ij,klj->ikl',m,a)
于 2015-05-09T19:02:43.647 回答