【发布时间】:2013-10-09 17:02:48
【问题描述】:
默认矩阵乘法计算为
c[i,j] = sum(a[i,k] * b[k,j])
我正在尝试使用自定义公式而不是点积来获取
c[i,j] = sum(a[i,k] == b[k,j])
在 numpy 中有没有一种有效的方法来做到这一点?
【问题讨论】:
标签: numpy vectorization matrix-multiplication dot-product
默认矩阵乘法计算为
c[i,j] = sum(a[i,k] * b[k,j])
我正在尝试使用自定义公式而不是点积来获取
c[i,j] = sum(a[i,k] == b[k,j])
在 numpy 中有没有一种有效的方法来做到这一点?
【问题讨论】:
标签: numpy vectorization matrix-multiplication dot-product
你可以使用广播:
c = sum(a[...,np.newaxis]*b[np.newaxis,...],axis=1) # == np.dot(a,b)
c = sum(a[...,np.newaxis]==b[np.newaxis,...],axis=1)
我在b 中包含了newaxis,只是说明了该数组是如何扩展的。还有其他向数组添加维度的方法(重塑、重复等),但效果是一样的。将a 和b 展开为相同的形状以进行逐个元素的乘法(或==),然后在正确的轴上求和。
【讨论】: