Python:如何从1D数组或列表中获取局部最大值
我是Python新手,我有一个问题无法用找到的答案来解决。。。希望有人能帮忙: 我需要获得从csv文件导入的数据集的所有本地最大值的列表。 值的范围为0到0.5左右 我只需要得到一个数据行的局部极大值列表(“Werte”,数组或“N”,list)就可以对它们进行统计 这就是我得到的: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'
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应该被视为最大值吗?因为你是组合布尔数组,我想说这更能说明你打算&
你的两个数组,而不是*
它们。