【发布时间】:2019-07-07 13:13:19
【问题描述】:
我有一个由零、一和 NaN 组成的 numpy ndarray。我想在该数组上使用多数过滤器,这意味着我想设置一个内核窗口(例如,3X3 单元格),它将遍历数组并将中心单元格的值更改为发生的值在它的邻居中最多。这个过滤器应该维持两个约束,它应该忽略 NaN,如果中心单元的值为 1,那么它应该保持它为 1。
这是我正在寻找的一个小例子: 输入数组:
array([[ 1., 1., 1., 0., 0.],
[ 1., 1., nan, 1., 1.],
[nan, 1., 1., 0., 1.],
[ 0., 0., 0., 0., 1.]])
应用多数过滤器 输出数组:
array([[ 1., 1., 1., 1., 1.],
[ 1., 1., nan, 1., 1.],
[nan, 1., 1., 1., 1.],
[ 0., 0., 0., 1., 1.]])
我在看scipy filters,但找不到任何合适的东西。我想建立一个generic convolved filter,但我不确定如何为大多数目的做到这一点。感觉这是应该存在的退出基本过滤器,但我似乎找不到它。
【问题讨论】:
-
您可能会发现这很有帮助stackoverflow.com/questions/41190852/…
-
我在这里做了几种方法...stackoverflow.com/a/54440152/2836621
-
为什么元素
[1, -1](第二行最后一列)是1?看起来输入数组中这个元素的大多数邻居都是 0。 -
@AGNGazer,如我发布的问题中所述,如果值为 1(一),则无论其邻居如何,它都应保持为 1(一)
标签: python numpy filter scipy numpy-ndarray