【发布时间】:2013-09-02 13:15:09
【问题描述】:
我正在尝试将 2D 数组中的每个项乘以 1D 数组中的相应项。如果我想将每一列乘以一维数组,这非常容易,如numpy.multiply 函数所示。但我想做相反的事情,将行中的每个项相乘。 换句话说,我想乘:
[1,2,3] [0]
[4,5,6] * [1]
[7,8,9] [2]
得到
[0,0,0]
[4,5,6]
[14,16,18]
但我得到了
[0,2,6]
[0,5,12]
[0,8,18]
有谁知道 numpy 是否有一种优雅的方法可以做到这一点? 非常感谢, 亚历克斯
【问题讨论】:
-
啊,我在提交问题时就想通了。先转置方阵,相乘,再转置答案。
-
最好将行转置为列矩阵,然后您不必重新转置答案。如果
A * B你必须做A * B[...,None]通过添加一个新轴(None)来转置B。 -
谢谢,确实如此。问题是当您有一个调用 .transpose() 或 .T 的一维数组时,它不会将其转换为列数组,而是将其保留为一行,因此据我所知,您必须将其定义为列马上开始。比如
x = [[1],[2],[3]]什么的。