python 寻找离散序列极值点的方法


Posted in Python onJuly 10, 2019

使用 scipy.signal 的 argrelextrema 函数(API),简单方便

import numpy as np 
import pylab as pl
import matplotlib.pyplot as plt
import scipy.signal as signal
x=np.array([
  0, 6, 25, 20, 15, 8, 15, 6, 0, 6, 0, -5, -15, -3, 4, 10, 8, 13, 8, 10, 3,
  1, 20, 7, 3, 0 ])
plt.figure(figsize=(16,4))
plt.plot(np.arange(len(x)),x)
print x[signal.argrelextrema(x, np.greater)]
print signal.argrelextrema(x, np.greater)

plt.plot(signal.argrelextrema(x,np.greater)[0],x[signal.argrelextrema(x, np.greater)],'o')
plt.plot(signal.argrelextrema(-x,np.greater)[0],x[signal.argrelextrema(-x, np.greater)],'+')
# plt.plot(peakutils.index(-x),x[peakutils.index(-x)],'*')
plt.show()
[25 15 6 10 13 10 20]
(array([ 2, 6, 9, 15, 17, 19, 22]),)

但是存在一个问题,在极值有左右相同点的时候无法识别,但是个人认为在实际的使用过程中极少会出现这种情况,所以可以忽略。

x=np.array([
  0, 15, 15, 15, 15, 8, 15, 6, 0, 6, 0, -5, -15, -3, 4, 10, 8, 13, 8, 10, 3,
  1, 20, 7, 3, 0 ])
plt.figure(figsize=(16,4))
plt.plot(np.arange(len(x)),x)
print x[signal.argrelextrema(x, np.greater)]
print signal.argrelextrema(x, np.greater)

plt.plot(signal.argrelextrema(x,np.greater)[0],x[signal.argrelextrema(x, np.greater)],'o')
plt.plot(signal.argrelextrema(x,np.less)[0],x[signal.argrelextrema(x, np.less)],'+')
plt.show()
[15 6 10 13 10 20]
(array([ 6, 9, 15, 17, 19, 22]),)

以上这篇python 寻找离散序列极值点的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现的数据结构与算法之快速排序详解
Apr 22 Python
python实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
python绘图方法实例入门
May 19 Python
浅谈python中的正则表达式(re模块)
Oct 17 Python
使用Python快乐学数学Github万星神器Manim简介
Aug 07 Python
python检测服务器端口代码实例
Aug 31 Python
Python3实现发送邮件和发送短信验证码功能
Jan 07 Python
Python + selenium + crontab实现每日定时自动打卡功能
Mar 31 Python
pyspark 随机森林的实现
Apr 24 Python
python爬虫中PhantomJS加载页面的实例方法
Nov 12 Python
Django中日期时间型字段进行年月日时分秒分组统计
Nov 27 Python
Python 避免字典和元组的多重嵌套问题
Jul 15 Python
Python中面向对象你应该知道的一下知识
Jul 10 #Python
python实现函数极小值
Jul 10 #Python
通过PHP与Python代码对比的语法差异详解
Jul 10 #Python
python 梯度法求解函数极值的实例
Jul 10 #Python
对Python中小整数对象池和大整数对象池的使用详解
Jul 09 #Python
Python 旋转打印各种矩形的方法
Jul 09 #Python
python opencv对图像进行旋转且不裁剪图片的实现方法
Jul 09 #Python
You might like
PHP mail()函数使用及配置方法
2014/01/14 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
JavaScript 函数式编程的原理
2009/10/16 Javascript
HTTP 304错误的详细讲解
2013/11/13 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
详解angular2.x创建项目入门指令
2018/10/11 Javascript
浅谈Vuex注入Vue生命周期的过程
2019/05/20 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
[10:24]郎朗助力完美“圣”典,天籁交织奏响序曲
2016/12/18 DOTA
Python实现的检测网站挂马程序
2014/11/30 Python
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
Python import用法以及与from...import的区别
2015/05/28 Python
在Python 3中实现类型检查器的简单方法
2015/07/03 Python
Python的IDEL增加清屏功能实例
2017/06/19 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
python3 实现验证码图片切割的方法
2018/12/07 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
什么是serialVersionUID
2016/03/04 面试题
2015年办公室文秘工作总结
2015/04/30 职场文书
信用卡工作证明范本
2015/06/19 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python
Nginx中使用Lua脚本与图片的缩略图处理的实现
2022/03/18 Servers
利用Python实现模拟登录知乎
2022/05/25 Python