通用最小值过滤器

时间:2015-10-29 11:41:18

标签: python loops scipy

我正在尝试在输入数组上运行通用过滤器,因此我可以在给定的窗口大小内获得局部最小值。

代码是这样的:

import scipy.ndimage.filters as scifil

def minimum(window):
    print window.shape
    for i in range(window.shape[0]):
        for j in range(window.shape[1]):
            window[i, j] -= min(window)
    return window

file = np.genfromtxt('E:\...\Test_local_chm.txt', dtype=None, delimiter='\t')
local_min = scifil.generic_filter(file3, minimum, size = 3)
np.savetxt('E:\...\output_local_chm.txt',local_min, delimiter='\t')

但我收到错误:

  

表示范围内的j(window.shape [1]):   IndexError:元组索引超出范围

这是为什么?在列和行的范围内运行,我不知道为什么它不起作用。谢谢!

1 个答案:

答案 0 :(得分:1)

这是因为

  

scipy.ndimage.filters.generic_filter

将输入的2D数组转换为1D数组,我正在迭代两个索引。我只需要删除第二次迭代,因此下面的代码修复了它。

 for i in range(window.shape[0]):
        window[i] -= min(window)