我想将形状(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?
答案 0 :(得分:1)
您如何看待将x重塑为2D并沿第二轴求和?
x.reshape(x.shape[0], -1).sum(axis=1)