栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

argrelextrema和扁平极

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

argrelextrema和扁平极

简短的答案: 可能

argrelextrema
不够灵活。考虑编写符合您需要的函数。


更长的答案:
您一定要使用

argrelextrema
吗?如果是,则可以使用
comparator
和的
order
参数
argrelextrema
(请参阅参考资料)。

对于您的简单示例,选择

np.greater_equal
as就足够了
comparator

>>> data = np.array([ 0, 1, 2, 1, 0, 1, 3, 3, 1, 0 ])>>> print(argrelextrema(data, np.greater_equal,order=1))(array([2, 6, 7]),)

但是请注意,以这种方式

>>> data = np.array([ 0, 1, 2, 1, 0, 1, 3, 3, 4, 1, 0 ])>>> print(argrelextrema(data, np.greater_equal,order=1))(array([2, 6, 8]),)

找到第一个

3
4
最大的行为,可能会表现出与您可能想要的不同的方式,因为
argrelextrema
现在将所有事物视为大于或等于其两个最近邻居的最大值。现在,您可以使用该
order
参数来确定此比较必须包含的邻居数量-
选择该选项
order=2
将更改我的上例,使其最多查找
4

>>> print(argrelextrema(data, np.greater_equal,order=2))(array([2, 8]),)

但是,这有一个缺点-让我们再次更改数据:

>>> data = np.array([ 0, 1, 2, 1, 0, 1, 3, 3, 4, 1, 5 ])>>> print(argrelextrema(data, np.greater_equal,order=2))(array([ 2, 10]),)

添加另一个峰作为最后一个值使您无法在处找到峰

4
,因为
argrelextrema
现在看到的第二个邻居大于
4
(对于嘈杂的数据很有用,但不一定在所有情况下都具有预期的行为)。


使用

argrelextrema
,您将始终被限制在固定数量的邻居之间进行二进制操作。但是请注意,
argrelextrema
以上示例中的所有操作都是
n
如果返回`data[n]

data[n-1] and data[n] >
data[n+1]`。您可以轻松地自己实现,然后完善规则,例如在第一个邻居具有相同值的情况下检查第二个邻居。


为了完整起见,似乎有更复杂的功能

scipy.signal
find_peaks_cwt
。但是,我没有使用它的经验,因此无法为您提供更多详细信息。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/611515.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号