gpt4 book ai didi

python - 二维数组一维中的 Numpy 局部最大值

转载 作者:太空宇宙 更新时间:2023-11-04 05:53:10 24 4
gpt4 key购买 nike

我想找到二维数组的局部最大值,但仅限于一维。即:

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”(最大值)与“13333789”(驻点)的区别

最佳答案

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

关于python - 二维数组一维中的 Numpy 局部最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29144921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com