以编程方式查找数据集中的“峰值”或下降

2023-12-30

如果我有一个看起来像这样的数据集

[0.523,0.445,0.558,0.492,0.440,0.502,0.742,0.802,0.821,0.811,0.804,0.860]

正如您所看到的,0.502 之后的值出现“尖峰”。有没有办法在Python中以编程方式找到这个? 我已经在使用 Numpy 和 Scipy;我确信这些库包含类似的内容。我只是不知道这个程序叫什么。

一个额外的好处是调整检测峰值或下降的“灵敏度”,因为数据集可能相当嘈杂。峰值意味着值的移动平均值持续增加,下降意味着值持续下降。

每个值的范围是[-1,1]。数组中的值数量为 50-100。


我建议使用 numpy 的 diff 函数:

import numpy    
a = [0.523,0.445,0.558,0.492,0.440,0.502,0.742,0.802,0.821,0.811,0.804,0.860]
numpy.diff(a)

这会给你:

array([-0.078,  0.113, -0.066, -0.052,  0.062,  0.24 ,  0.06 ,  0.019,
       -0.01 , -0.007,  0.056])

如果数字为正,则向上跳跃,如果为负,则向下跳跃。

如果您只想找到存在尖峰的位置,向上或向下,请尝试以下操作:

abs(numpy.diff(a)) > 0.2

向上或向下调整 0.2 会分别降低或提高灵敏度。这将给出:

array([False, False, False, False, False,  True, False, False, False,
       False, False], dtype=bool)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式查找数据集中的“峰值”或下降 的相关文章

随机推荐