假设我有一个形状为 (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/