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

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 请问各位,如何在Jetson nano主控板的Ubuntu系统中安装PyQt5
  • ¥15 MAC安装佳能LBP2900驱动的网盘提取码
  • ¥400 微信停车小程序谁懂的来
  • ¥15 ATAC测序到底用什么peak文件做Diffbind差异分析
  • ¥15 安装ubantu过程中第一个vfat 文件挂载失败
  • ¥20 GZ::CTF如何兼容一些靶机?
  • ¥15 etcd集群部署问题
  • ¥20 谁可以帮我一下问一下各位
  • ¥15 为何重叠加权后love图的SMD与svyCreateTableOne函数绘制基线表的不一致
  • ¥150 求 《小魔指》街机游戏机整合模拟软件