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