混合形状列阵列的点积

时间:2015-07-15 16:57:40

标签: python arrays numpy dot-product

我试图获取nx2x3数组和nx3数组中每个元素的点积(n的值总是在两者之间共享)。

例如:

/omega/usecase/input

我试图获取的数组将包含以下内容:

import numpy as np

a = np.arange(12).reshape(4,3)
b = np.arange(24).reshape(4,2,3)

我确定有一种方法可以使用print(np.dot(b[0],a[0])) print(np.dot(b[1],a[1])) print(np.dot(b[2],a[2])) print(np.dot(b[3],a[3])) einsum,但我无法让它发挥作用。

1 个答案:

答案 0 :(得分:3)

您可以这样使用einsum

>>> np.einsum('ij,ikj->ik', a, b)
array([[  5,  14],
       [ 86, 122],
       [275, 338],
       [572, 662]])

此处发生的所有事情是a的轴0乘以b的轴0,a的轴1乘以{{1的轴2 }}。沿后一轴的值相加,并返回一个2D数组。

b并不能完全适用于这个特殊问题,因为我们需要沿两个轴进行乘法运算,并且只需一个进行求和。这些运算只与tensordot配对。)