我需要通过对原始数组的8x8个元素的块进行平均来“下采样”2d形状阵列(2880,5760)以形成(360,720)。使用NumPy这是一种有效的方法吗?
修改 我只是意识到我需要在masked_arrays上执行此操作,因此链式mean()不会这样做。
答案 0 :(得分:0)
首先引入两个额外的轴,然后沿这些轴采取方法。如果X
是您的数据:
X.reshape(360, 8, 720, 8).mean(axis=3).mean(axis=1)
答案 1 :(得分:0)
以下是适用于蒙版数组的方法
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)