Python 使用Numpy将3D矩阵中的最后一列设置为所有其他列的总和

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

对于下面的矩阵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  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)