对掩模阵列的子阵列进行有效平均

时间:2012-07-20 13:57:21

标签: python numpy

  

可能重复:
  Grouping 2D numpy array in average

我需要通过对原始数组的8x8个元素的块进行平均来“下采样”2d形状阵列(2880,5760)以形成(360,720)。使用NumPy这是一种有效的方法吗?

修改 我只是意识到我需要在masked_arrays上执行此操作,因此链式mean()不会这样做。

2 个答案:

答案 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)