numpy:二维矩阵的逐行乘积

时间:2019-09-20 13:33:14

标签: python numpy

我想对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的数组。我发现herehere可以将数组的每一列用作输入来使用np.multiply()。但是,我希望对具有两列以上的二维数组具有某种通用性。我的目标是使用矩阵/数组本身作为输入,并获取所有列的按行乘积。

2 个答案:

答案 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.]])