Python Scipy最大值过滤器是疯狂的

Python Scipy最大值过滤器是疯狂的,python,filter,scipy,max,Python,Filter,Scipy,Max,我对scipy的maximum_filter函数有一个小问题,没有得到解决方案 我有三个不同的numpy阵列 a = np.array([[-152, nan, -30, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]) b = np.array([[ nan, nan, -30, nan],

我对scipy的maximum_filter函数有一个小问题,没有得到解决方案

我有三个不同的numpy阵列

a =  np.array([[-152, nan, -30, nan],
               [ nan, nan, nan, nan],
               [ nan, nan, nan, nan],
               [ nan, nan, nan, nan]])


b =  np.array([[ nan, nan, -30, nan],
               [ nan, nan, nan, nan],
               [ nan, nan, nan, nan],
               [ nan, nan, nan, nan]])


c =  np.array([[-152, nan, nan, nan],
               [ nan, nan, nan, nan],
               [ nan, nan, nan, nan],
               [ nan, nan, nan, nan]])
如果我现在想计算a,b和c的最大值

 maximum = (a == maximum_filter(a,3))
对于a和c,我得到一个最大值,但是当我用b尝试时,我没有得到最大值。为什么


nan有问题吗?

我怀疑算法正在对最大/最小值进行累积检查。由于
x>nan
x
对于数值
x
都是错误的,因此当它不在“窗口”的左上方时,它无法找到最大值。它恰好适用于前两个,因为左上角有一个值。你在做什么,让你在有这么多
nan
s的数据上做max过滤器?谢谢你的快速回答。上面是一个发现错误的测试。我有来自声纳系统的大量背景噪音数据。我已经设置了一个阈值来消除所有我不想要的回退。您希望输出值是什么?你说scipy很疯狂,但到目前为止,你的数据很疯狂。也许先清理数据(例如,改用屏蔽数组)。作为输出,我希望得到最大值。我有一个(223701)形状的数组。我想在3x3的区域中找到最大值,并将它们作为输出,这样我就可以使用它们。解决方法是将所有NaN更改为
-np.inf
b=np.where(np.isnan(b),-np.inf,b)