Python numpy:二维矩阵的行积

Python numpy:二维矩阵的行积,python,numpy,Python,Numpy,我想执行二维矩阵的行乘法,例如使用二维数组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.,

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

您可以使用来应用
np。沿第二个轴乘以
,将其维数减少
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])

这是你想要的吗

x=np.column_stack((np.one(10),np.arange(1,11)))
np.prod(x,axis=1,keepdims=True)
输出

array([[ 1.],
       [ 2.],
       [ 3.],
       [ 4.],
       [ 5.],
       [ 6.],
       [ 7.],
       [ 8.],
       [ 9.],
       [10.]])

非常感谢!这与下面Dev Khadka的回答有什么不同?它们在cpu时间上的性能相同,但从视觉上看,输出似乎不同。
np.multiply.reduce
np.prod
的性能应该也一样@brunoI-see,非常感谢!这与下面亚图的答案有什么不同?这两个答案在CPU时间内的执行情况相同…np.multiply是一个“ufunc”将两个数组相乘,使用reduce重复执行同一数组的乘法,直到得到单个值。np.prod是一个方便函数,可以在内部使用np.multiply