为了账号安全,请及时绑定邮箱和手机立即绑定

在1D numpy数组中使用Numpy查找局部最大值/最小值

在1D numpy数组中使用Numpy查找局部最大值/最小值

慕丝7291255 2019-08-01 14:24:13
在1D numpy数组中使用Numpy查找局部最大值/最小值你能否建议numpy / scipy的模块函数可以在1D numpy数组中找到局部最大值/最小值?显然,最简单的方法是看看最近的邻居,但我希望有一个公认的解决方案,这是numpy发行版的一部分。
查看完整描述

3 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

如果您要查找1d数组a中小于其邻居的所有条目,您可以尝试

numpy.r_[True, a[1:] < a[:-1]] & numpy.r_[a[:-1] < a[1:], True]

您还可以在使用此步骤之前平滑阵列numpy.convolve()

我认为没有专门的功能。


查看完整回答
反对 回复 2019-08-01
?
青春有我

TA贡献1784条经验 获得超8个赞

对于没有太多噪音的曲线,我建议使用以下小代码片段:


from numpy import *


# example data with some peaks:

x = linspace(0,4,1e3)

data = .2*sin(10*x)+ exp(-abs(2-x)**2)


# that's the line, you need:

a = diff(sign(diff(data))).nonzero()[0] + 1 # local min+max

b = (diff(sign(diff(data))) > 0).nonzero()[0] + 1 # local min

c = (diff(sign(diff(data))) < 0).nonzero()[0] + 1 # local max



# graphical output...

from pylab import *

plot(x,data)

plot(x[b], data[b], "o", label="min")

plot(x[c], data[c], "o", label="max")

legend()

show()

这+1很重要,因为diff减少了原始索引号。


查看完整回答
反对 回复 2019-08-01
  • 3 回答
  • 0 关注
  • 2609 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信