我正在寻找一种有效的方法来找到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])
有没有更有效的方法来做到这一点?我已经研究了一些图像处理过滤器/工具,但不能完全绕过它。
答案 0 :(得分:1)
这有用吗?我的笔记本电脑只需几秒钟即可获得~18000点:
ng-app="App"