可能重复:
平均分组 2D numpy 数组
我需要通过对原始数组的 8x8 元素块进行平均来对形状 (2880, 5760) 的二维数组进行“下采样”以形成 (360, 720)。哪种方法是使用 NumPy 的有效方法?
编辑 我只是意识到我需要在 masked_arrays 上执行此操作,因此链式 mean() 不会这样做。
可能重复:
平均分组 2D numpy 数组
我需要通过对原始数组的 8x8 元素块进行平均来对形状 (2880, 5760) 的二维数组进行“下采样”以形成 (360, 720)。哪种方法是使用 NumPy 的有效方法?
编辑 我只是意识到我需要在 masked_arrays 上执行此操作,因此链式 mean() 不会这样做。
首先引入两个额外的轴,然后沿这些轴采取手段。如果X
是您的数据:
X.reshape(360, 8, 720, 8).mean(axis=3).mean(axis=1)
这也是适用于掩码数组的方式
import numpy as np, numpy.random
nx = 100
ny = 101
bx = 3
by = 4
arr = np.random.uniform(size = (nx * bx, ny * by))
arr = np.ma.masked_array(arr,arr<.1)
rebinarr = np.swapaxes(arr.reshape(nx, bx, ny, by), 1, 2).reshape(nx, ny, bx * by).mean(axis=2)
print rebinarr.shape
>> (100,101)