Scipy的argelextrema如何计算相对的最小和最大点?

问题描述

我需要一种方法来“总结”一组非常简单的时间序列数据的趋势。我拥有的数据是数字的小型数组。因此,对于此任务,我认为查找数据的局部最小值和最大值是个好主意,为此,我使用了Scipy的argrelextrema

但是,我注意到最小值/最大值的数量发生了变化,即使我输入的数组大小相同,也只有值发生了变化。

这是我用来处理最小和最大点的代码

Min = argrelextrema(Data,np.less_equal,order=1)
Max = argrelextrema(Data,np.greater_equal,order=1)

Data一个numpy数组,此后,我将简单地合并这两个列表,以获得新的最小值和最大值点数组。

以下是一些示例:

Data = [0.01562082 0.01559678 0.01558285 0.01557904 0.01558535 0.01560178
        0.01564973 0.01570132 0.01574636 0.01577308 0.01578109 0.01577718
        0.01578482 0.01582784 0.01591733 0.01604655 0.01618308 0.01632583
        0.01645165 0.0165331  0.01656233 0.01657383 0.01659051 0.01663495
        0.01669707 0.01677208 0.01684644 0.01691019 0.01692698 0.01689828
        0.01683601 0.0167794  0.01675036 0.01673833 0.01672176 0.01670325
        0.01667906 0.01663228 0.0165824  0.01654845 0.0165189  0.01650002
        0.01650457 0.0165023  0.01647637 0.01644021 0.01641083 0.01639389
        0.01640292 0.01645308 0.01653916 0.01663476 0.01672894 0.0168041
        0.01685819 0.01688975 0.01689195 0.01686738 0.01681289 0.01674656
        0.01668275 0.01662218 0.01657003 0.01653403 0.01651127 0.01648644
        0.01646815 0.01647403 0.01650616 0.01654718 0.01660268 0.01667546
        0.01675055 0.01681478 0.01684934 0.01685311 0.01683879 0.01680271
        0.01675268 0.01670577 0.01669586 0.01673116 0.01678866 0.0168687
        0.01696406 0.01704584 0.01707744 0.01707247 0.01707501 0.01709555
        0.01714064 0.01720552 0.01729031 0.01739978 0.01750487 0.0175807
        0.0176142  0.01763469 0.01767566 0.01772319 0.01778411 0.01784948
        0.01791152 0.01794561 0.01793331 0.01788523 0.01779712 0.0176765
        0.01756823 0.017496   0.01748024 0.01752458 0.01760164 0.01769378
        0.01778257 0.01786717 0.01791865 0.01792737 0.01794314 0.01795934
        0.01801259 0.0181366  0.0182826  0.01844525 0.01860524 0.01871107
        0.01880035 0.01887308 0.01892926 0.0189689 ]

请给我以下长度为17的最小值和最大值的列表:

MinMax = [0.01562082353242461,0.015579037832236124,0.01578109371304461,0.015777184677035146,0.016926976224961164,0.016500019864325727,0.016504573743351694,0.016393892856635964,0.016891952660782285,0.016468150306266152,0.01685311141681872,0.016695859906600805,0.017077441484554673,0.01707247074227736,0.01794561357320149,0.01748024377591248,0.018968898758036815]

但是,以下数据将为我提供14个最小和最大点的列表:

Data = [0.00064984 0.00065114 0.00065204 0.00065254 0.00065266 0.00065237
 0.00065159 0.00065026 0.00064896 0.0006477  0.00064665 0.00064609
 0.00064647 0.00064749 0.00064878 0.00065004 0.00065087 0.00065168
 0.00065266 0.00065349 0.00065477 0.00065704 0.00066007 0.0006632
 0.00066555 0.00066693 0.00066696 0.00066599 0.00066417 0.00066208
 0.00066094 0.00066131 0.00066262 0.00066403 0.00066497 0.00066549
 0.00066538 0.00066449 0.00066272 0.00066061 0.00065843 0.0006563
 0.00065423 0.00065227 0.00065067 0.00064954 0.00064898 0.00064901
 0.00064957 0.00065054 0.00065157 0.00065272 0.0006536  0.00065394
 0.00065397 0.00065379 0.00065349 0.00065335 0.00065325 0.00065317
 0.00065289 0.00065251 0.00065165 0.00065056 0.00064978 0.00064935
 0.00064948 0.00065005 0.00065066 0.00065106 0.00065089 0.00065036
 0.00064965 0.00064905 0.00064859 0.00064812 0.00064768 0.00064699
 0.00064611 0.00064518 0.00064434 0.00064374 0.0006433  0.00064309
 0.00064284 0.00064229 0.00064121 0.00064007 0.00063909 0.00063794
 0.00063668 0.00063542 0.00063418 0.00063303 0.00063196 0.00063098
 0.00063008 0.00062953 0.0006289  0.00062836 0.00062837 0.00062893
 0.00063076 0.00063475 0.00064102 0.00064836 0.00065552 0.00066161
 0.00066631 0.00066966 0.00067176 0.00067227 0.00067201 0.00067174
 0.00067106 0.00066951 0.00066726 0.00066436 0.00066139 0.0006586
 0.00065682 0.00065608 0.00065639 0.00065754 0.00065896 0.00065938
 0.00065977 0.00066013 0.00066047 0.00066079]

输出

MinMax = [0.0006498411504998909,0.0006526565286276228,0.0006460858205177308,0.0006669555321107541,0.0006609390367534275,0.0006654930522849102,0.0006489758439007318,0.0006539745380065707,0.0006493490211631867,0.0006510601879485751,0.0006283588262705852,0.0006722702062996666,0.0006560753432617264,0.0006607864033713336]

在某些情况下,我会得到20分;在其他情况下,我将得到8。所以我的问题是:此函数如何计算那些最小和最大点?是否取决于数据变化多少?还是取决于数据的大小或其他?有没有办法获得相同数量的积分?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)