python - 对大 numpy 数组中的每几行进行平均

标签 python numpy average

假设我有一个形状为 (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 循环的情况下做到这一点。

最佳答案

假设第一个维度可以(精确)被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]]

关于python - 对大 numpy 数组中的每几行进行平均,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60105865/

相关文章:

python - 解释一些Python代码。访问不存在的列?

python - 逻辑与嵌套 bool 数组

python - 输出层中不兼容的形状 - Tensorflow

python - 计算 "distance matrix"

c++ - 在c++中找到用户输入的3个最大数字的平均值

python - 获取多个日期的平均日期 - pandas

python - 如何创建个性化的 Django 管理模型?

python - 具有两个特征的梯度下降计算特征空间

python - 如何在 pygame 中使正方形和圆形之间发生碰撞来触发游戏结束?

hadoop - MapReduce - 如何计算相对值(平均值、前 k 等)?