Numpy:点数乘积而不是总和

时间:2016-12-15 12:34:02

标签: python numpy max sequence dot-product

在numpy中是否有办法执行以下操作(或者是否有一般的数学术语):

假设正常的点积:

M3[i,k] = sum_j(M1[i,j] * M2[j,k])

现在我想通过总和其他操作替换总和,比如最大值:

M3[i,k] = max_j(M1[i,j] * M2[j,k])

正如您所看到的,它与上述内容完全平行,我们只需max而不是所有j,而不是总和。

其他选项可以是minprod,以及将序列/集合转换为值的任何其他操作。

1 个答案:

答案 0 :(得分:5)

正常的点积(使用numpy广播)

M3 = np.sum(M1[:, :, None] * M2[None, :, :], axis = 1)

您可以使用任何具有axis关键字的功能执行相同的操作。

M3 = np.max(M1[:, :, None] * M2[None, :, :], axis = 1)