首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用find_peaks求局部最大值

用find_peaks求局部最大值
EN

Stack Overflow用户
提问于 2021-12-06 12:19:33
回答 1查看 808关注 0票数 1

我使用scipy.signal.find_peaks来尝试为非常波动的数据找到最大值。使用以下数据文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
import numpy as np
from scipy.signal import find_peaks
Data = [95,95,95,95,95,95,95,95,94,94,94,94,94,94,94,94,229,444,457,387,280,188,236,181,183,183,185,186,189,190,190,190,179,165,151,151,161,214,213,213,214,213,212,195,179,160,158,155,114,98,164,346,229,39,134,149,194,1,153,171,187,185,104,102,100,90,90,92,92,92,93,93,93,93,93,93,94,94,94,94,94,11,1,11,11,70,182,104,58,60,134,115,99,97,99,98,98,97,97,97,97,97,97,97,97,97,96,96,96,96,96,96,96,96,96,96,96,96,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,93,93,152,206,221,286,326,341,360,377,391,392,393,393,393,394,406,418,420,422,422,408,389,345,329,276,224,166,113,-6,91,91,91,442,324,387,389,387,443,393,393,393,393,391,381,379,377,303,174,131,0,115,112,112,111,111,109,107,106,104,104,103,102,101,101,101,101,100,100,1,1,12,13,65,138,87]
df2 = pd.DataFrame(Data)


#convert to 1D array
number_column = df.loc[:,'Data']
numbers = number_column.values

#finding peaks for 1D array
peaks = find_peaks(numbers, height = 300, threshold = 1, distance = 5)
height = peaks[1]['peak_heights'] #list of heights of peaks
peak_pos = numbers[peaks[0]]
print(peaks)

#plot the peaks
fig = plt.figure()
ax = fig.subplots()
ax.plot(numbers)
ax.scatter(peak_pos, height,color = 'r', s = 25, label = 'Maxima')
ax.legend

我得到了457,346,442,443的局部极值。然而,在这个系统中,我需要得到以下极值值:(457,346,422,443)

在谋划我的极端时,我要说的是:

所以,我的问题是,有谁知道如何得到正确的极端,我需要?我只是错过了422的价值,一直在玩设置,但没有成功。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-06 12:42:53

您应该将peak_pos = numbers[peaks]行更改为peak_pos = peaks[0],因为峰值给出了峰值的索引,这是要传递给ax.scatter的实际x坐标。

要使峰值达到422,我们可以将阈值设置为None (这样您就不会限制自己与邻居的垂直距离),并使距离更大,例如10。

然后可以将高度添加为文本注释:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
import numpy as np
from scipy.signal import find_peaks
import matplotlib.pyplot as plt

Data = [95,95,95,95,95,95,95,95,94,94,94,94,94,94,94,94,229,444,457,387,280,188,236,181,183,183,185,186,189,190,190,190,179,165,151,151,161,214,213,213,214,213,212,195,179,160,158,155,114,98,164,346,229,39,134,149,194,1,153,171,187,185,104,102,100,90,90,92,92,92,93,93,93,93,93,93,94,94,94,94,94,11,1,11,11,70,182,104,58,60,134,115,99,97,99,98,98,97,97,97,97,97,97,97,97,97,96,96,96,96,96,96,96,96,96,96,96,96,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,93,93,152,206,221,286,326,341,360,377,391,392,393,393,393,394,406,418,420,422,422,408,389,345,329,276,224,166,113,-6,91,91,91,442,324,387,389,387,443,393,393,393,393,391,381,379,377,303,174,131,0,115,112,112,111,111,109,107,106,104,104,103,102,101,101,101,101,100,100,1,1,12,13,65,138,87]
df = pd.DataFrame({'Data':Data})

# convert to 1D array
number_column = df.loc[:,'Data']
numbers = number_column.values

#finding peaks for 1D array
# peaks = find_peaks(numbers, height = 300, threshold = 1, distance = 5)

peaks = find_peaks(numbers, height = 300, threshold = None, distance=10)
height = peaks[1]['peak_heights'] #list of heights of peaks
peak_pos = peaks[0]
print(peaks)

# plot the peaks
fig = plt.figure()
ax = fig.subplots()
ax.plot(numbers)
ax.scatter(peak_pos, height,color = 'r', s = 25, label = 'Maxima')
ax.legend

## add numbers as text annotations
for i, text in enumerate(height):
    if text.is_integer():
        ax.annotate(int(text), (peak_pos[i], height[i]), size=10)
    else:
        ax.annotate(text, (peak_pos[i], height[i]), size=10)
plt.show()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70251448

复制
相关文章
C语言矩阵求逆(c语言求矩阵的局部最大值)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129049.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/28
3.1K0
用遗传算法求函数最大值三:主程序和结果
主程序 主程序如下: clear clc popsize = 30; % 种群规模chromlength = 10; % 染色体长度pc = 0.5; % 交叉概率pm = 0.05; % 变异概率maxgen = 20; % 最大迭代数lx = 5; ux = 10; bestfit = zeros(1, maxgen); bestobjvalue = z
mwangblog
2018/10/18
5440
用遗传算法求函数最大值二:选择、交叉和变异
选择(或复制)操作决定哪些个体可以进入下一代。这里采用轮盘赌法选择,这种方法比较容易实现。
mwangblog
2018/10/18
1.8K0
用遗传算法求函数最大值一:编码和适应值
求函数 f(x)=9×sin(5x)+8×cos(4x), x∈[5,10] 的最大值。
mwangblog
2018/10/18
2.2K0
【DP】花瓶插花求美学最大值
现在有F束不同品种的花束,同时有至少同样数量的花瓶被按顺序摆成一行,其位置固定于架子上,并从1至V按从左到右顺序编号,V是花瓶的数目(F≤V)。花束可以移动,并且每束花用1至F的整数唯一标识。标识花束的整数决定了花束在花瓶中排列的顺序,如果i<j,那么花束i必须放在花束j左边的花瓶中。每个花瓶只能放一束花。如果花瓶的数目大于花束的数目,则多余的花瓶空置。
echobingo
2019/05/22
7550
滑动窗口求最大值 leetcode 59
滑动窗口最大值问题 利用递减队列实现 Dequeue dequeue = new LinkedList<>(); 递减队列方法说明 peekFirst获取队头元素 pollFirsr队头元素出队 offerLast == add在队尾插入新元素
全栈程序员站长
2022/09/14
2610
SQL求最大值的几种方式
insert into students values(1,'AARON',20);
BUG弄潮儿
2022/06/30
1.6K0
手把手教你用Python求最大值和最小值
导读:在数据科学中,通常会使用统计信息来描述和汇总数据。本节介绍几个具有此类功能的描述性统计数据。
青南
2021/05/13
4.2K0
手把手教你用Python求最大值和最小值
【运筹学】运输规划求最大值 ( 运输规划求最大值问题示例 | 转为运输规划求最小值的方式 )
在所有值都变为负数后 , 为了方便计算 , 给所有的值都加上一个正数 , 计算的数值虽然不同 , 但是最终的运输规划结果是相同的 ;
韩曙亮
2023/03/28
1.8K0
找出三个最大值求乘积
给你一个正数整型数组nums(不考虑有负数的情况),在数组中找出由三个数组装成的最大乘积值,并输出这个乘积
算法与编程之美
2022/02/17
5270
蚁群算法求函数最大值二
functionsants = edgeselection(ants, tau, P0, lamda, xl, xu, yl, yu)
mwangblog
2018/12/10
1.3K0
蚁群算法求函数最大值一
ants = initant(Ant, xl, xu, yl, yu); % 初始化蚁群
mwangblog
2018/12/10
2.1K0
蚁群算法求函数最大值一
第八周算法提高求最大值
本文最后更新于 1163 天前,其中的信息可能已经有所发展或是发生改变。 #include<iostream> #include<cstring> using namespace std; int sum1=0,sum2=0,Max=0; int n; int a[105][3]; void dg(){ for(int j=0;j<n;j++){ if(a[j][2]==0&&(sum1+a[j][0])>=0&&(sum2+a[j][1])>=0){ sum1+=a[j][0]; su
Yuyy
2022/06/28
4110
js算法之求最大值及其下标
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> var a=Number(prompt("666")); var arr=[]; var max=0; for(var i=0;i<a;i++) { arr[i]=Number(prompt("6666")
贵哥的编程之路
2021/04/02
2.3K0
Power Pivot中求汇总后的最大值
今天在群里看到群友在询问一个案例,想着也来分析和分享下。 原数据: 目标数据: (一) 分析需求 先求销售合计,然后在计算出的销售合计的基础上求最大值。 求合计:这个是针对所有筛选条件进行的求和,所以
逍遥之
2020/03/24
1.5K0
acm C语言求两个数最大值
C语言实验题――两个数比较 描述 求2个数中较大者。 输入 第一行为测试的数据组数N,接下来的N行分别是两个待比较的整数 输出 输出N行,每一行的值为每组数中较大的整数 样例输入 2 1 2 15 10 样例输出 2 15 #include <stdio.h> int a,b; int main(int argc, char const *argv[]) { scanf(“%d,%d”,&a,&b); if (a>b) { pr
kevinfaith
2018/09/18
2.8K0
【递归】递归求n个数中的最大值
🧓作者:每天都要记得刷题(●’◡’●) 🍉时间:2022/04/04 🍉本篇感悟:举一反三,由求 n的阶乘联想到递归求n个数中的最大值,对递归有了更深的了解。 文章目录 ⭐题目(代码😇在文末) ⭐递归思想 ⭐求前n个斐波那契数 ⭐具体代码(答案😇) ⭐题目(代码😇在文末) 使用递归求 55 ,22, 155, 77, 99这5个数中的最大值 ⭐递归思想 🎈Q: 什么是递归? A1:我们学过函数,知道了函数调用,函数调用就是一个函数调用其他函数,比如主函数调用求两个数之和。 A2:
MicroFrank
2023/01/16
1.3K0
JavaScript 函数求1-100的数字之和,数字之间求最大值
JavaScript 使用关键字 function 定义函数。 函数可以通过声明定义,也可以是一个表达式。 JavaScript 函数求1-100的数字之和 <script> function getSum(){ var sum = 0; for(var i = 1; i<=100; i++ ) { sum += i; } console.log(sum); } getSum(); </script> 数字之间求最大值 <script type="text/
梦溪
2021/09/09
1.3K0
MapReduce:随机生成100个小数并求最大值
在编写MapReduce的时候,自带的输入格式有时候满足不了我们的需求,这就需要自己定义InputFormat,InputSplit和RecordReader。
小爷毛毛_卓寿杰
2019/02/13
6500
LeetCode 1537. 最大得分(切片取出局部最大值)
文章目录 1. 题目 2. 解题 1. 题目 你有两个 有序 且数组内元素互不相同的数组 nums1 和 nums2 。 一条 合法路径 定义如下: 选择数组 nums1 或者 nums2 开始遍历(从下标 0 处开始)。 从左到右遍历当前数组。 如果你遇到了 nums1 和 nums2 中都存在的值,那么你可以切换路径到另一个数组对应数字处继续遍历(但在合法路径中重复数字只会被统计一次)。 得分定义为合法路径中不同数字的和。 请你返回所有可能合法路径中的最大得分。 由于答案可能很大,请你将它对 10^9
Michael阿明
2021/02/19
3260

相似问题

用TensorFlow求局部最大值

36

求局部极小和局部最大值

15

用numpy求xy数据点图的局部最大值?

12

求函数的所有局部最大值

11

用scipy.signal.argrelextrema同时求局部极小和最大值

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文