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中的__slots__使用示例
Feb 26 Python
使用Python写CUDA程序的方法
Mar 27 Python
Python使用smtp和pop简单收发邮件完整实例
Jan 09 Python
Python3.5字符串常用操作实例详解
May 01 Python
Django 数据库同步操作技巧详解
Jul 19 Python
浅谈python3中input输入的使用
Aug 02 Python
Python socket非阻塞模块应用示例
Sep 12 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 Python
Python多进程multiprocessing、进程池用法实例分析
Mar 24 Python
python实现四人制扑克牌游戏
Apr 22 Python
Python基于模块Paramiko实现SSHv2协议
Apr 28 Python
Python pexpect模块及shell脚本except原理解析
Aug 03 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
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
2011/01/06 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
PHP 实现代码复用的一个方法 traits新特性
2015/02/22 PHP
php格式化json函数示例代码
2016/05/12 PHP
PHP模块化安装教程
2016/06/01 PHP
最短的IE判断代码
2011/03/13 Javascript
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
2017/09/03 jQuery
vue better-scroll插件使用详解
2018/01/25 Javascript
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
JavaScript实现矩形块大小任意缩放
2020/08/25 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
微信小程序实现左滑删除效果
2020/11/18 Javascript
django之session与分页(实例讲解)
2017/11/13 Python
代码讲解Python对Windows服务进行监控
2018/02/11 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
基于wxPython的GUI实现输入对话框(2)
2019/02/27 Python
Python Tkinter实例——模拟掷骰子
2020/10/24 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
加拿大在线眼镜零售商:SmartBuyGlasses加拿大
2019/05/25 全球购物
2019年Java 最常见的 面试题
2016/10/19 面试题
计算机毕业生自荐信范文
2014/03/23 职场文书
解放思想大讨论活动心得体会
2014/09/11 职场文书
2014乡镇领导班子四风对照检查材料思想汇报
2014/10/05 职场文书
《三国志》赏析
2019/08/27 职场文书