一尘不染

在一个numpy数组中相乘

python

我试图将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可以做到这一点吗?非常感谢Alex


阅读 135

收藏
2020-12-20

共1个答案

一尘不染

像您显示的正常乘法:

>>> import numpy as np
>>> m = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> c = np.array([0,1,2])
>>> m * c
array([[ 0,  2,  6],
       [ 0,  5, 12],
       [ 0,  8, 18]])

如果添加轴,它将使您所需的方式成倍增加:

>>> m * c[:, np.newaxis]
array([[ 0,  0,  0],
       [ 4,  5,  6],
       [14, 16, 18]])

您还可以移调两次:

>>> (m.T * c).T
array([[ 0,  0,  0],
       [ 4,  5,  6],
       [14, 16, 18]])
2020-12-20