使用Numpy

时间:2016-05-26 21:51:19

标签: 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  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)

但有没有办法在一行中完成?

1 个答案:

答案 0 :(得分:2)

尝试:

p[:, :, -1] = p[:, :, :-1].sum(axis=2)

如果你没有归零列,你可以:

np.concatenate([p, p.sum(axis=2)[:, :, None]], axis=2)