我想对2-D矩阵执行按行乘法,例如使用二维数组x
>>> x = np.column_stack((np.ones(10), np.arange(1,11)))
>>> x
array([[ 1., 1.],
[ 1., 2.],
[ 1., 3.],
[ 1., 4.],
[ 1., 5.],
[ 1., 6.],
[ 1., 7.],
[ 1., 8.],
[ 1., 9.],
[ 1., 10.]])
一个1到10的数组。我发现here和here可以将数组的每一列用作输入来使用np.multiply()
。但是,我希望对具有两列以上的二维数组具有某种通用性。我的目标是使用矩阵/数组本身作为输入,并获取所有列的按行乘积。
答案 0 :(得分:2)
您可以使用np.multiply.reduce
沿第二轴应用np.multiply
,将其尺寸减小1
:
np.multiply.reduce(x, axis=1)
# array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
可以概括为任何2d
形状的数组:
x = np.arange(30).reshape((-1, 3))
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23],
[24, 25, 26],
[27, 28, 29]])
np.multiply.reduce(x, axis=1)
# array([ 0, 60, 336, 990, 2184, 4080, 6840, 10626, 15600, 21924])
答案 1 :(得分:1)
这就是你想要的
x = np.column_stack((np.ones(10), np.arange(1,11)))
np.prod(x, axis=1, keepdims=True)
输出
array([[ 1.],
[ 2.],
[ 3.],
[ 4.],
[ 5.],
[ 6.],
[ 7.],
[ 8.],
[ 9.],
[10.]])