... dang touchy keyboard! > Here is some sample data: > data = [0.10, 0.50, 0.60, 0.40, 0.39, 0.50, 1.00, 0.80, 0.60, 1.20, > 1.10, 1.30, 1.40, 1.50, 1.05, 1.20, 0.90, 0.70, 0.80, 0.40, 0.45, 0.35, > 0.10] > > In this data, some of the significant points include: > data[0] > data[2] > data[4] > data[6] > data[8] > data[9] > data[13] > data[14]
Using the first derivative, and looking for sign changes, finds many of the values you marked as "significant". -- Paul data = [0.10, 0.50, 0.60, 0.40, 0.39, 0.50, 1.00, 0.80, 0.60, 1.20, 1.10, 1.30, 1.40, 1.50, 1.05, 1.20, 0.90, 0.70, 0.80, 0.40, 0.45, 0.35, 0.10] delta = lambda (x1,x2) : x2-x1 dy_dx =[0]+map(delta,zip(data,data[1:])) d2y_dx2 = [0]+map(delta,zip(dy_dx,dy_dx[1:])) sgnChange = lambda (x1,x2) : x1*x2<0 sigs = map(sgnChange,zip(dy_dx,dy_dx[1:])) print [i for i,v in enumerate(sigs) if v] [2, 4, 6, 8, 9, 10, 13, 14, 15, 17, 18, 19, 20] -- http://mail.python.org/mailman/listinfo/python-list