【问题标题】:Numpy matrix multiplication with custom dot product带有自定义点积的 Numpy 矩阵乘法
【发布时间】: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


    【解决方案1】:

    你可以使用广播:

    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,只是说明了该数组是如何扩展的。还有其他向数组添加维度的方法(重塑、重复等),但效果是一样的。将ab 展开为相同的形状以进行逐个元素的乘法(或==),然后在正确的轴上求和。

    【讨论】:

    • 谢谢。这非常整洁。
    猜你喜欢
    • 2019-09-22
    • 2017-07-20
    • 2018-09-14
    • 2022-06-23
    • 2018-10-06
    • 2015-03-31
    • 1970-01-01
    • 2019-11-23
    • 2019-09-22
    相关资源
    最近更新 更多