我想使用scipy的maximum_filter来检测局部最大值,但有一个问题。如果过滤器对全部相等的值应用函数,则将它们全部作为局部最大值返回,但我需要以相反的方式使用它们。
示例脚本:
import numpy as np
import scipy.ndimage as sc
ones_matrix = np.ones((6,6))
max_arr = (ones_matrix == sc.maximum_filter(ones_matrix, 3, mode = 'constant'))
print max_arr
这将返回所有True,但我需要它们为false。我怎样才能做到这一点?提前谢谢!
[[ True True True True True True]
[ True True True True True True]
[ True True True True True True]
[ True True True True True True]
[ True True True True True True]
[ True True True True True True]]
答案 0 :(得分:1)
你可以改变你的句子:
max_arr = (ones_matrix == sc.maximum_filter(ones_matrix, 3, mode = 'constant'))
这个:
max_arr = (ones_matrix != sc.maximum_filter(ones_matrix, 3, mode = 'constant'))