Разбить массив на неравные куски в соответствии с разницей между значениями - PullRequest
0 голосов
/ 23 марта 2020

Я набор данных x и y, показывающих кривую фона и 6 пиков. Я создал функцию, которая удаляет фоновые данные и создает новый массив только с x-значениями для 6 пиков. Теперь я хочу провести анализ каждого отдельного пика, поэтому хочу разбить мой массив на 6 меньших массивов, которые содержат значения для 1 пика каждый. Значения x не в кусках одинакового размера, но разница между значениями x в пике не превышает 0,3, а разница между окончанием 1 sh 1 пика и началом следующего составляет около 1. Так что я Я думаю, что я могу разбить массив на меньшие массивы, разница между окончанием 1 массива и началом следующего составляет установленное значение ie .1. Любая помощь оценена

(редактировать: мне уже удалось сделать выше, но функция дает мне только 5 пиков и пропускает последний, 6-й пик):

#xnb is x data without any background, for example:

xnb=[1.1,1.2,1.3,1.4,1.5,3.4,3.5,3.6,3.7,7.8,7.9,10.8,10.9,11.0,11.1] #4     peaks

def peakfinder(xnb):
    pn=[]
    peakarrays=[]
    prevpoint=xnb[0]
    for point in xnb:
        dif=point-prevpoint
        if dif<=0.3 and dif>=-0.3:
            pn.append(point)
        else:
            peakarrays.append(pn)
            pn=[]
        prevpoint=point
    return peakarrays
...