【问题标题】:How can I multiply a column vector with a matrix element wise in Numpy [duplicate]如何在 Numpy 中将列向量与矩阵元素相乘 [重复]
【发布时间】:2020-04-24 17:33:54
【问题描述】:

我有一个形状为 (100,3) 的 numpy 数组 X 和一个形状为 (100,) 的 numpy 数组 sub_res。如何将 sub_res 元素与 X 相乘,以便得到结果形状 (100,3)?我想避免循环使用。

【问题讨论】:

标签: python numpy numpy-ndarray array-broadcasting


【解决方案1】:

您可以转置 X,然后使用 numpy.dot 将其乘以 sub_res,最后转置最终结果。

【讨论】:

  • 您的建议将产生一个 (3,) 形状数组。最后的转置什么都不做。我尝试用一​​个小的工作示例来说明我的答案。
【解决方案2】:

制作两个数组:

In [236]: X = np.ones((10,3)); sub=np.ones((10,))                                                      

使用None(或np.newaxis)进行索引会更改sub 的形状。 sub.reshape(10,1) 也可以。

In [237]: sub[:,None].shape                                                                            
Out[237]: (10, 1)

通过broadcasting,我们可以将 (N,3) 与 (N,1) 相乘以产生 (N,3):

In [238]: (sub[:,None]*X).shape                                                                        
Out[238]: (10, 3)

许多人需要(重新)阅读一些numpy 基础知识,重点关注broadcasting

https://numpy.org/doc/stable/user/quickstart.html#broadcasting-rules

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2017-12-12
    • 1970-01-01
    • 2014-03-01
    相关资源
    最近更新 更多