Python:在二维数组

时间:2016-08-18 18:58:47

标签: python arrays numpy mean

我正在寻找一种有效的方法来找到2D NumPy数组中元素的某个半径的值的平均值,不包括中心点和值< 0

我目前的方法是创建一个圆盘形状的蒙版(使用方法here)并找到此蒙版内的点的平均值。这需要太长时间...超过10分钟计算我的300x300阵列中的~18000点。

我想找到的数组在这里标题为“arr”

def radMask(index,radius,array,insert):
  a,b = index
  nx,ny = array.shape
  y,x = np.ogrid[-a:nx-a,-b:ny-b]
  mask = x*x + y*y <= radius*radius
  array[mask] = insert

  return array

arr_mask          = np.zeros_like(arr).astype(int)
arr_mask          = radMask(center, radius, arr_mask, 1)
arr_mask[arr < 0] = 0  #Exclude points with no echo
arr_mask[ind]     = 0  #Exclude center point

arr_mean = 0
if np.any(dbz_bg):
    arr_mean = sp.mean(arr[arr_mask])

有没有更有效的方法来做到这一点?我已经研究了一些图像处理过滤器/工具,但不能完全绕过它。

1 个答案:

答案 0 :(得分:1)

这有用吗?我的笔记本电脑只需几秒钟即可获得~18000点:

ng-app="App"