我有一些代码用于根据2D圆形窗口中的相邻值计算图像中的缺失值.它还使用来自相同位置处的一个或多个时间相邻图像的值(即,在第三维中移位的相同2D窗口).
对于缺少的每个位置,我需要根据整个窗口中可用的所有值计算值,但仅限于具有值的空间上最近的n个单元格(在图像/ Z轴位置),其中n是某个值,小于2D窗口中的单元格总数.
在那一刻,计算窗口中的所有内容要快得多,因为我的排序方法是使用数据获取最近的n个单元格是函数中最慢的部分,因为每次都必须重复它,即使距离方面也是如此.窗口坐标不会改变.我不确定这是否必要,并且觉得我必须能够获得一次排序的距离,然后在仅选择可用单元格的过程中屏蔽它们.
这是我的代码,用于选择要在间隙单元位置的窗口中使用的数据:
# radius will in reality be ~100
radius = 2
y,x = np.ogrid[-radius:radius+1, -radius:radius+1]
dist = np.sqrt(x**2 + y**2)
circle_template = dist > radius
# this will in reality be a very large 3 dimensional array
# representing daily images with some gaps, indicated by 0s
dataStack = np.zeros((2,5,5))
dataStack[1] = (np.random.random(25) * 100).reshape(dist.shape)
dataStack[0] = (np.random.random(25) * 100).reshape(dist.shape)
testdata = dataStack[1]
alternatedata = dataStack[0]
random_gap_locations = (np.random.random(25) * 30).reshape(dist.shape) > testdata
testdata[random_gap_locations] = 0 …Run Code Online (Sandbox Code Playgroud)