weixin_43732226 2022-02-27 13:30 采纳率: 82.1%
浏览 103
已结题

python找到list中的最低点

x是一个list,图形的纵坐标是x中的值,横坐标是自然数,用plt函数画出来,假设图形如下,我想找到这个图形中所有阶段低点(类似连续函数里的拐点):a,b点。不知道如何实现。Help me
补充:不是求整个列表的最低点,是找阶段的阶段低点,阶段不确定的。在图形上能看到

img

  • 写回答

3条回答 默认 最新

  • 天元浪子 Python领域优质创作者 2022-02-27 18:20
    关注

    题主的意思就是找到曲线上的全部驻点,也就是导数为0点。如果题主的数据可以通过回归算法找到函数表达式,则可以通过求导找出所有的驻点;如果数据不能或者难以通过回归算法找打函数表达式,也可以通过比较相邻数据点的增量找到驻点。下面的代码,用一组正弦数据演示了这个方法。

    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> x = np.linspace(0,8*np.pi,100) # 在4个周期内等间隔取100个点
    >>> y = np.sin(x) # 生成正弦曲线上100个点的值
    >>> plt.plot(x,y) # 曲线如下图所示
    [<matplotlib.lines.Line2D object at 0x0000020702BD0D08>]
    >>> plt.show()
    >>> d = np.absolute(np.diff(y)) # 相邻点取差的绝对值
    >>> i = np.argsort(d) # 索引序号排序
    >>> x[i[:8]] # 4个周期有8个驻点
    array([ 4.56958931, 20.30928584, 10.91624114, 13.96263402,  1.52319644,
           23.35567872, 17.26289297,  7.61598219])
    >>> y[i[:8]] # 如果只需要导数从负变正的驻点,那就遍历这8个点,比较其前后值即可
    array([-0.98982144,  0.99383846, -0.99685478,  0.98480775,  0.99886734,
           -0.97880245, -0.99987413,  0.97181157])
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月10日
  • 已采纳回答 3月2日
  • 修改了问题 2月27日
  • 创建了问题 2月27日

悬赏问题

  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起