gpt4 book ai didi

python - 获取 scipy.ndimage.filters.generic_filter 中的当前元素

转载 作者:太空狗 更新时间:2023-10-30 01:22:53 24 4
gpt4 key购买 nike

是否可以在 scipy.ndimage.filters.generic_filter 的过滤函数中获取“当前元素”?

例如,如果 A[0] 始终包含当前元素(似乎并非如此),则类似以下的内容可能会找到局部最大值

def local_max_f(A) :
return A[0] == A.max()

img = np.random.rand(100).reshape(10,10)
ndimage.generic_filter( img, local_max_f, size=3 )

最佳答案

当前元素应该是 size 中心的元素(或者在你的例子中是 A[1]),但这不能依赖于输入数组的边缘,并取决于处理数组边界的模式

docs instead provide a neat example (根据您的情况进行了调整)使用类来确定过滤器中的当前位置,以在迭代之间保持某种状态。这总是首先遍历最后一个维度;您所要做的就是将 result 行替换为您的过滤器函数实际需要做的任何事情,在您的情况下,这将类似于 result = self._array[self.coordinates] = = buffer.max().

a = arange(12).reshape(3,4)

class fnc_class:
def __init__(self, _array):
# store the shape:
self.shape = _array.shape
self._array = _array
# initialize the coordinates:
self.coordinates = [0] * len(self.shape)

def filter(self, buffer):
result = self._array[tuple(self.coordinates)] == buffer.max()
print self.coordinates
# calculate the next coordinates:
axes = range(len(self.shape))
axes.reverse()
for jj in axes:
if self.coordinates[jj] < self.shape[jj] - 1:
self.coordinates[jj] += 1
break
else:
self.coordinates[jj] = 0
return result

fnc = fnc_class(a)
generic_filter(a, fnc.filter, footprint = [[1, 0], [0, 1]])

关于python - 获取 scipy.ndimage.filters.generic_filter 中的当前元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18580920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com