Python 一维二维数组的Numpy局部极大值

Python 一维二维数组的Numpy局部极大值,python,arrays,numpy,Python,Arrays,Numpy,我想找到二维数组的局部极大值,但只在一维中。即: 1 2 3 2 1 1 4 5 6 2 2 2 3 3 3 2 2 2 2 2 1 2 3 2 2 2 2 3 3 3 将返回: 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 显然,通过迭代数组来解决这个问题很简单,但这很慢,而且通常是可以避免的。有没有快速实现这一目标的方法 编辑: 我设计了一个更快的解决方案: 将numpy作为np导入 testArray =

我想找到二维数组的局部极大值,但只在一维中。即:

1 2 3 2 1 1 4 5 6 2 
2 2 3 3 3 2 2 2 2 2
1 2 3 2 2 2 2 3 3 3 
将返回:

0 0 1 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0 0 0 
0 0 1 0 0 0 0 0 1 0 
显然,通过迭代数组来解决这个问题很简单,但这很慢,而且通常是可以避免的。有没有快速实现这一目标的方法

编辑: 我设计了一个更快的解决方案:

将numpy作为np导入

testArray = np.array([[1,2,3,2,1,1,4,5,6,2],[2,2,3,3,3,2,2,2,2,2],[1,2,3,2,2,2,2,3,3,3] ])

leftShift = np.roll(testArray,1, axis=1)
rightShift = np.roll(testArray,-1, axis=1)

Max = ((testArray>leftShift) & (testArray>rightShift) )*1

print(Max)
返回:

[[0 0 1 0 0 0 0 0 1 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 1 0 0 0 0 0 0 0]]

除重复读数外,这是正确的结果。即。。“13331”(最大值)与“1333789”(固定点)的区别是什么?

您可以通过对每行应用有限差分梯度并检查符号变化来解决此问题。
但是,不清楚在边界处要做什么。

您测试过它有多慢吗?是的,一张图像0.8秒答案实际上取决于您手头的数据。一个数据集(图像)内平均有多少相同的最小值?数据集(图像)的大小是多少?