I am pretty new in Python and I have a problem which I could not solve with found answers… hopefully someone can help:
I need to get a list of all local maxima of a data-set which is imported from a csv-file.
Values range from 0 to 0.5 or so.
I just need to get a list of those local maxima of one data row (“Werte”, array or “N”, list) to do statistics on them.
This is what I have got:
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)) Werte = np.array([N]) # one try here: only gives me a set of 1s... c = (diff(sign(diff(Werte))) < 0).nonzero() + 1 # local max print(c)
is there anyone who could help me find the right way to do it?
Thank you a lot!
I think you are looking for
scipy.signal. It gives you the indices of the relative maxima of a 1d array.
from scipy.signal import argrelmax t=linspace(-4,40,1000) y=sin(t) argrelmax(y)
[126 269 412 554 697 840 982]
to get the values, use
notice that it does not count local maxima at the extreme of your domain.