加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python:如何从1D阵列或列表中获取局部最大值

发布时间:2020-12-16 23:23:47 所属栏目:Python 来源:网络整理
导读:我是 Python的新手,我有一个问题,我找不到解决的问题…希望有人可以提供帮助: 我需要获取从csv文件导入的数据集的所有本地最大值的列表. 值的范围从0到0.5左右. 我只需要获取一个数据行(“Werte”,数组或“N”,列表)的局部最大值列表来对它们进行统计. 这就
我是 Python的新手,我有一个问题,我找不到解决的问题…希望有人可以提供帮助:
我需要获取从csv文件导入的数据集的所有本地最大值的列表.
值的范围从0到0.5左右.

我只需要获取一个数据行(“Werte”,数组或“N”,列表)的局部最大值列表来对它们进行统计.

这就是我所拥有的:

import numpy as np
from numpy import *

N = []   

file = open('C:/Auswertung/PEE/PEE_L_1_O_130702-1.1.csv','r') 
Probe = file.readline()         # lese Inhalt zeilenweise in Listen
Header = file.readline()
data = file.readlines()

for row in data:
    columns = row.split(";")       # Trenne Zeilen bei ';' 
    N.append(float(columns[1]))

Werte = np.array([N])

# one try here: only gives me a set of 1s...    
c = (diff(sign(diff(Werte))) < 0).nonzero()[0] + 1 # local max
print(c)

有没有人可以帮我找到正确的方法呢?
非常感谢!

解决方法

我想你正在寻找来自scipy.signal的argrelmax.它为您提供1d数组的相对最大值的索引.
from scipy.signal import argrelmax
t=linspace(-4,40,1000)
y=sin(t)
argrelmax(y)[0]

结果

[126 269 412 554 697 840 982]

获取值,使用

y[argrelmax(y)[0]]

编辑:

请注意,它不计算您域中极端的局部最大值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读