【问题标题】:Numpy.sum() nD array of (2,2,2...n) to a 1D array of shape (2,)Numpy.sum() nD 数组 (2,2,2...n) 到形状 (2,) 的一维数组
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    相关资源
    最近更新 更多