【问题标题】:Numpy operator for each vector element with matrix individual row multiplication具有矩阵单独行乘法的每个向量元素的 Numpy 运算符
【发布时间】:2020-05-10 08:55:06
【问题描述】:

是否有一个 numpy 运算符会导致单个向量元素与相应的矩阵行相乘?

例如,

    import numpy
    a,b=numpy.array([1,2]), numpy.array([[1,2,3,4],[5,6,7,8]])

当我将 a 和 b 相乘时,我希望结果是

[[1,2,3,4],[10,12,14,16]]

其中每个向量元素与对应的矩阵行元素相乘。

我知道如何使用循环来实现这一点,但我只是想知道 numpy 中是否存在为此的内置函数,尤其是当 b 是一个非常大但稀疏的矩阵时?

谢谢。

【问题讨论】:

    标签: python numpy sparse-matrix matrix-multiplication


    【解决方案1】:

    你可以像下面这样使用multiply:

    import numpy
    a,b=numpy.array([1,2]), numpy.array([[1,2,3,4],[5,6,7,8]])
    print(numpy.multiply(a,b.T).T)
    # [[ 1  2  3  4]
    # [10 12 14 16]]
    

    其他选项是使用* 并转置如下:

    import numpy
    a,b=numpy.array([1,2]), numpy.array([[1,2,3,4],[5,6,7,8]])
    print(a*b.T)
    # [[ 1 10]
    # [ 2 12]
    # [ 3 14]
    # [ 4 16]]
    

    【讨论】:

    • 感谢您的回复,但您能否像我在问题中提出的那样扩展答案以包括大型稀疏矩阵?
    • @YourIDE 请在您的问题正文中添加输入示例和所需输出
    • 我指的是与 scipy.sparse 中类似的方法,但我想这会起作用,因为它只是一个带有矩阵乘法的向量。另外,在第二种方法中,应该是 (a*b.T).T 感谢您的帮助。 :)
    【解决方案2】:

    你可以使用:

    a[:,None]*b
    

    这应该相当快,没有额外的计算成本。

    输出:

    [[ 1  2  3  4]
     [10 12 14 16]]
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 2011-12-13
    相关资源
    最近更新 更多