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如何获取列表(List)的中位数
Aug 12 Python
python 获取网页编码方式实现代码
Mar 11 Python
Python跨文件全局变量的实现方法示例
Dec 10 Python
和孩子一起学习python之变量命名规则
May 27 Python
利用Python如何将数据写到CSV文件中
Jun 05 Python
解决python写入mysql中datetime类型遇到的问题
Jun 21 Python
python执行精确的小数计算方法
Jan 21 Python
Python中使用logging和traceback模块记录日志和跟踪异常
Apr 09 Python
python 实现在tkinter中动态显示label图片的方法
Jun 13 Python
ubuntu上安装python的实例方法
Sep 30 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
Dec 27 Python
django中ImageField的使用详解
Dec 21 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在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
深入PHP与浏览器缓存的分析
2013/06/03 PHP
yii上传文件或图片实例
2014/04/01 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
PHP中include()与require()的区别说明
2017/02/14 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
jQuery中change事件用法实例
2014/12/26 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
2016/11/25 Javascript
基于Bootstrap分页的实例讲解(必看篇)
2017/07/04 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
JS实现获取数组中最大值或最小值功能示例
2019/03/02 Javascript
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
python实现通过shelve修改对象实例
2014/09/26 Python
Python for循环中的陷阱详解
2018/07/13 Python
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
python+OpenCV实现图像拼接
2020/03/05 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
python 代码运行时间获取方式详解
2020/09/18 Python
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
英国现代家具和装饰网站:PN Home
2018/08/16 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
ASP.NET中的身份验证有那些
2012/07/13 面试题
介绍一下grep命令的使用
2012/06/28 面试题
保险公司开门红口号
2014/06/21 职场文书
小学新教师个人总结
2015/02/05 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
污染环境建议书
2015/09/14 职场文书
使用Django实现商城验证码模块的方法
2021/06/01 Python
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库