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

前端之家收集整理的这篇文章主要介绍了Python:如何从1D阵列或列表中获取局部最大值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是 Python的新手,我有一个问题,我找不到解决的问题…希望有人可以提供帮助:
我需要获取从csv文件导入的数据集的所有本地最大值的列表.
值的范围从0到0.5左右.

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

这就是我所拥有的:

  1. import numpy as np
  2. from numpy import *
  3.  
  4. N = []
  5.  
  6. file = open('C:/Auswertung/PEE/PEE_L_1_O_130702-1.1.csv','r')
  7. Probe = file.readline() # lese Inhalt zeilenweise in Listen
  8. Header = file.readline()
  9. data = file.readlines()
  10.  
  11. for row in data:
  12. columns = row.split(";") # Trenne Zeilen bei ';'
  13. N.append(float(columns[1]))
  14.  
  15. Werte = np.array([N])
  16.  
  17. # one try here: only gives me a set of 1s...
  18. c = (diff(sign(diff(Werte))) < 0).nonzero()[0] + 1 # local max
  19. print(c)

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

解决方法

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

结果

  1. [126 269 412 554 697 840 982]

获取值,使用

  1. y[argrelmax(y)[0]]

编辑:

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

猜你在找的Python相关文章