python-在numpy数组中相乘
我正在尝试将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 S asked 2019-10-11T05:21:53Z
6个解决方案
81 votes
像您显示的正常乘法:
>>> 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],