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实现去除下载电影和电视剧文件名中的多余字符的方法
Sep 23 Python
python采用getopt解析命令行输入参数实例
Sep 30 Python
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 Python
在Python中操作字符串之rstrip()方法的使用
May 19 Python
Python读取指定目录下指定后缀文件并保存为docx
Apr 23 Python
详解python 字符串和日期之间转换 StringAndDate
May 04 Python
Python实现多级目录压缩与解压文件的方法
Sep 01 Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 Python
django 快速启动数据库客户端程序的方法示例
Aug 16 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
Mar 06 Python
浅谈python处理json和redis hash的坑
Jul 16 Python
python中remove函数的踩坑记录
Jan 04 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
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
[转帖]PHP世纪万年历
2006/12/06 PHP
JS实现php的伪分页
2008/05/25 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
jQuery实现长按按钮触发事件的方法
2015/02/02 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
angular.js指令中的controller、compile与link函数的不同之处
2017/05/10 Javascript
js实现导航跟随效果
2018/11/17 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
python远程登录代码
2008/04/29 Python
python端口扫描系统实现方法
2014/11/19 Python
Python中列表元素转为数字的方法分析
2016/06/14 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
python版opencv摄像头人脸实时检测方法
2018/08/03 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
Otiumberg官网:英国半精致珠宝品牌
2021/01/16 全球购物
酒店总经理工作职责
2013/12/13 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
毕业生工作求职信
2014/06/30 职场文书
初中班主任工作总结2015
2015/05/13 职场文书