将(2,2,2 ... n)的numpy.sum()nD数组转换为形状(2,)的一维数组

时间:2019-11-21 17:52:28

标签: python arrays numpy numpy-ndarray

我想将形状(2,2,2 ... n)的nD数组(矩阵)numpy.sum()转换为形状(2,)的一维数组。

基本上沿轴= 0。 (将形状(2,)的每个1d数组的第一个数求和,然后将相同数组的第二个数求和成一个形状(2,)的单个结果1d数组。)

但是matrix.sum(axis = 0)仅适用于形状(2,2),而我认为matrix.sum(axis =(1,2))适用于(2,2,2) 。但是(2,2,2,2)数组又如何呢?

n维使我感到困惑。一个通用的解决方案,以及简短的解释,将不胜感激。

编辑:我在下面提供了要汇总的nD数组的示例。我想沿axis = 0求和以获得(2,)一维数组。 numpy.sum(axis = 0)似乎仅适用于形状为(2,2)的数组...

#Of shape (2,2):
[[9.99695358e-02 9.99232016e-01]
 [9.00030464e-01 7.67983971e-04]].sum(axis=0) seems to work

#Of shape (2,2,2):
[[[2.02737071e-01 7.75883149e-01]
  [2.02650032e-08 1.58192237e-02]]
 [[7.31718878e-06 1.41793363e-03]
  [4.12802168e-03 7.26350831e-06]]].sum(axis=(1,2)) seems to work

#Of shape… (2,2,2,2)
[[[[1.83819962e+00 1.02712560e-02]
   [5.05122135e-02 2.80555725e-04]]
  [[5.60304309e-07 5.44521143e-04]
   [2.41592380e-03 1.49436734e-05]]]
 [[[7.04398015e-05 7.66717944e-06]
   [1.76843337e-05 1.98868986e-06]]
  [[9.74010599e-02 1.12527543e-07]
   [2.61427056e-04 2.70778171e-08]]]].sum(axis=?) # What axis? And how to generalise?

1 个答案:

答案 0 :(得分:1)

您如何看待将x重塑为2D并沿第二轴求和?

x.reshape(x.shape[0], -1).sum(axis=1)