我想将 numpy.sum() 形状为 (2,2,2...n) 的 nD 数组(矩阵)转换为形状为 (2,) 的 1D 数组。
基本上沿着轴=0。 (将每个形状为 (2,) 的一维数组的第一个数字相加,并将相同数组的第二个数字相加为一个形状为 (2,) 的一维数组)。
然而,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?
最佳答案
您对将 x reshape 为二维并沿第二个轴求和有何看法?
x.reshape(x.shape[0], -1).sum(axis=1)
关于python - Numpy.sum() 将 (2,2,2...n) 的 nD 数组转换为形状 (2,) 的 1D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58980949/