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 相关文章推荐
详解Django通用视图中的函数包装
Jul 21 Python
Python迭代和迭代器详解
Nov 10 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
Oct 11 Python
Python自定义线程类简单示例
Mar 23 Python
python分批定量读取文件内容,输出到不同文件中的方法
Dec 08 Python
500行Python代码打造刷脸考勤系统
Jun 03 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
关于Python形参打包与解包小技巧分享
Aug 24 Python
为什么相对PHP黑python的更少
Jun 21 Python
django使用graphql的实例
Sep 02 Python
Python+MySQL随机试卷及答案生成程序的示例代码
Feb 01 Python
PyTorch的Debug指南
May 07 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
全国FM电台频率大全 - 17 湖北省
2020/03/11 无线电
php 数组的创建、调用和更新实现代码
2009/03/09 PHP
学习php设计模式 php实现建造者模式
2015/12/07 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
推荐dojo学习笔记
2007/03/24 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
nodejs中方法和模块用法示例
2018/12/24 NodeJs
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
2019/05/10 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
Python兔子毒药问题实例分析
2015/03/05 Python
Python使用redis pool的一种单例实现方式
2016/04/16 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
2016/05/25 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
Python发送邮件测试报告操作实例详解
2018/12/08 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
医疗纠纷调解协议书
2015/08/06 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
八年级作文之感恩
2019/11/22 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
mysql left join快速转inner join的过程
2021/06/30 MySQL
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL