【发布时间】:2017-01-09 04:43:06
【问题描述】:
我想使用 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]]
【问题讨论】:
-
你用
max_arr = (ones_matrix != sc.maximum_filter(ones_matrix, 3, mode = 'constant'))怎么样? -
如果矩阵中的所有值都相等,是否可以添加一个特殊情况,因此返回
False而不是运行scipy.ndimage.maximum_filter?我认为 scipy 正在做“正确”的事情。 -
感谢您的建议。 @BPL 的解决方案有效。 :)
-
@Litwos 好的,我已经添加了我的评论作为答案,所以我们可以关闭线程