【问题标题】:Scipy maximum filter for all equal values所有相等值的 Scipy 最大过滤器
【发布时间】: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 好的,我已经添加了我的评论作为答案,所以我们可以关闭线程

标签: python scipy filtering


【解决方案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'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多