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字符类型的一些方法小结
May 16 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
opencv python 傅里叶变换的使用
Jul 21 Python
Python中的枚举类型示例介绍
Jan 09 Python
python调用webservice接口的实现
Jul 12 Python
pytorch 预训练层的使用方法
Aug 20 Python
pygame实现俄罗斯方块游戏(AI篇1)
Oct 29 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
May 15 Python
通过Python实现Payload分离免杀过程详解
Jul 13 Python
Django web自定义通用权限控制实现方法
Nov 24 Python
Pycharm Plugins加载失败问题解决方案
Nov 28 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批量缩放图片的代码[ini参数控制]
2011/02/11 PHP
浅析php工厂模式
2014/11/25 PHP
php自定义加密与解密程序实例
2014/12/31 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
2015/04/14 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
JQuery AJAX提交中文乱码的解决方案
2010/07/02 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
详解ESLint在Vue中的使用小结
2018/10/15 Javascript
JS前后端实现身份证号验证代码解析
2020/07/23 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
python TKinter获取文本框内容的方法
2018/10/11 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
如何理解python对象
2020/06/21 Python
Python通过len函数返回对象长度
2020/10/22 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
使用django自带的user做外键的方法
2020/11/30 Python
介绍一下#error预处理
2015/09/25 面试题
幼儿园大班开学教师寄语
2014/04/03 职场文书
银行进社区活动总结
2014/07/07 职场文书
庆祝儿童节标语
2014/10/09 职场文书
督导岗位职责
2015/02/04 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
创业计划书之奶茶店开店方案范本!
2019/08/06 职场文书
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers