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 25 Python
Python的IDEL增加清屏功能实例
Jun 19 Python
详解用Python处理HTML转义字符的5种方式
Dec 27 Python
Pipenv一键搭建python虚拟环境的方法
May 22 Python
python实现可视化动态CPU性能监控
Jun 21 Python
Python中垃圾回收和del语句详解
Nov 15 Python
Python实现堡垒机模式下远程命令执行操作示例
May 09 Python
Python循环实现n的全排列功能
Sep 16 Python
Django实现简单网页弹出警告代码
Nov 15 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
python实现马丁策略回测3000只股票的实例代码
Jan 22 Python
python可视化之颜色映射详解
Sep 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学习之PHP表达式
2006/10/09 PHP
PHP中PDO的错误处理
2011/09/04 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
JavaScript入门教程(10) 认识其他对象
2009/01/31 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
jQuery1.6 类型判断实现代码
2011/09/01 Javascript
jQuery 拖动层(在可视区域范围内)
2012/05/24 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
深入浅析JavaScript中的constructor
2016/04/19 Javascript
Angular 理解module和injector,即依赖注入
2016/09/07 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
BootstrapTable refresh 方法使用实例简单介绍
2017/02/20 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
vue-axios使用详解
2017/05/10 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
angularjs2 ng2 密码隐藏显示的实例代码
2017/08/01 Javascript
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
Why do we need Unit test
2013/01/03 面试题
Ejb技术面试题
2015/04/29 面试题
农林环境专业求职信
2014/03/13 职场文书
国际经济贸易专业自荐信
2014/06/13 职场文书
汽修专业自荐信
2014/07/07 职场文书
高中社区服务活动报告
2015/02/05 职场文书
创先争优个人总结
2015/03/04 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
神州牡丹园的导游词
2019/11/20 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书