Python 使用Numpy将3D矩阵中的最后一列设置为所有其他列的总和
对于下面的矩阵p,我想将每行的最后一个元素设置为该行所有其他元素的总和。例如: 原始矩阵:Python 使用Numpy将3D矩阵中的最后一列设置为所有其他列的总和,python,numpy,matrix,sum,Python,Numpy,Matrix,Sum,对于下面的矩阵p,我想将每行的最后一个元素设置为该行所有其他元素的总和。例如: 原始矩阵: In [70]: print P [[[1 2 3 0] [4 1 2 0] [7 1 2 0]] [[7 2 5 0] [8 2 4 0] [6 3 1 0]]] 总结之后: In [73]: print P [[[ 1 2 3 6] [ 4 1 2 7] [ 7 1 2 10]] [[ 7 2 5 14] [ 8 2 4 14] [ 6
In [70]: print P
[[[1 2 3 0]
[4 1 2 0]
[7 1 2 0]]
[[7 2 5 0]
[8 2 4 0]
[6 3 1 0]]]
总结之后:
In [73]: print P
[[[ 1 2 3 6]
[ 4 1 2 7]
[ 7 1 2 10]]
[[ 7 2 5 14]
[ 8 2 4 14]
[ 6 3 1 10]]]
我可以通过分别对p[0]和p[1]求和来实现这一点,即
In [71]: P[0,:,3] = numpy.sum( P[0,:,:3], axis=1)
In [72]: P[1,:,3] = numpy.sum( P[1,:,:3], axis=1)
但是,有没有一种方法可以在一行中完成呢?试试:
p[:, :, -1] = p[:, :, :-1].sum(axis=2)
如果开始时没有零列,则可以:
np.concatenate([p, p.sum(axis=2)[:, :, None]], axis=2)