【问题标题】:Average every several rows in a big numpy array在一个大的numpy数组中平均每几行
【发布时间】:2020-02-07 01:16:56
【问题描述】:

假设我有一个形状为(100000000, 4) 的数组。 我想每 25 行计算一次mean(axis=0),以获得一个形状为(4000000, 4) 的新数组。

为了更清楚,下面是一个简单的例子: 显示了一个 4 x 4 数组 H。我想每 2 行计算一次mean(axis=0),以获得一个形状为(2, 4) 的新数组J

H = [[1,1,1,1],
     [2,2,2,2],
     [3,3,3,3],
     [4,4,4,4]]

J = [[1.5, 1.5, 1.5, 1.5],
     [3.5, 3.5, 3.5, 3.5]]

我想知道是否有一种不使用 for 循环的有效方法。

【问题讨论】:

    标签: python numpy average


    【解决方案1】:

    假设第一个维度(完全)可以被m 整除。然后你可以这样做:

    J = H.reshape((H.shape[0] // m, m, H.shape[1])).mean(axis=1)
    

    或者,更简单,让numpy 算出第一个维度的大小:

    J = H.reshape((-1, m, H.shape[1])).mean(axis=1)
    

    对于您的具体示例m=2

    In [3]: m = 2
       ...: J = H.reshape((H.shape[0]//m, m, H.shape[1])).mean(axis=1)
       ...: print(J)
    [[1.5 1.5 1.5 1.5]
     [3.5 3.5 3.5 3.5]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-04
      • 2015-07-22
      • 1970-01-01
      • 2023-03-24
      • 2020-12-09
      • 2013-08-29
      • 2021-07-24
      相关资源
      最近更新 更多