【发布时间】:2019-11-21 17:52:28
【问题描述】:
我想将形状为 (2,2,2...n) 的 nD 数组(矩阵)numpy.sum() 转换为形状为 (2,) 的一维数组。
基本上沿轴=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?
【问题讨论】:
-
到目前为止你尝试过什么?我鼓励您添加 minimal reproducible example 说明您迄今为止所做的尝试,并将其缩小到一个特定问题,否则这可能会继续获得反对票和关闭投票。
-
如果您只是将乘法
*替换为加法+,那么您的previous question的答案不会起作用吗?
标签: python arrays numpy numpy-ndarray