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

Python:如何从1D数组或列表中获取局部最大值,python,numpy,local,Python,Numpy,Local,我是Python新手,我有一个问题无法用找到的答案来解决。。。希望有人能帮忙: 我需要获得从csv文件导入的数据集的所有本地最大值的列表。 值的范围为0到0.5左右 我只需要得到一个数据行的局部极大值列表(“Werte”,数组或“N”,list)就可以对它们进行统计 这就是我得到的: import numpy as np from numpy import * N = [] file = open('C:/Auswertung/PEE/PEE_L_1_O_130702-1.1.csv'

我是Python新手,我有一个问题无法用找到的答案来解决。。。希望有人能帮忙: 我需要获得从csv文件导入的数据集的所有本地最大值的列表。 值的范围为0到0.5左右

我只需要得到一个数据行的局部极大值列表(“Werte”,数组或“N”,list)就可以对它们进行统计

这就是我得到的:

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)
将numpy导入为np
从numpy进口*
N=[]
文件=打开('C:/Auswertung/PEE/PEE_L_1_O_130702-1.1.csv','r')
Probe=file.readline()#lese在Listen中的alt zeilenweise中
Header=file.readline()
data=file.readlines()
对于数据中的行:
列=行。拆分(“;”)#Trenne Zeilen bei';'
N.append(float(列[1]))
Werte=np.数组([N])
#在这里尝试一次:只给我一组1。。。
c=(符号(符号(符号(符号)之差))小于0。非零()[0]+1#局部最大值
印刷品(c)
有人能帮我找到正确的方法吗?
多谢各位

你走在正确的轨道上。你需要做的唯一额外的事情就是切片Werke阵列。 但我认为,找到局部最大值可以简化为:

 werte[1:-1][(diff(werte)[:-1]>0)*(diff(werte)[1:]<0)]

werte[1:-1][(diff(werte)[:-1]>0)*(diff(werte)[1:]

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]]
编辑:


请注意,它不计算域极端的局部极大值。

如果你有[2 4 0],4应该被视为最大值吗?因为你是组合布尔数组,我想说这更能说明你打算
&
你的两个数组,而不是
*
它们。