Как обнаружить пики на крайних концах функции в Python? - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь найти пики функции, используя scipy, однако я хочу, чтобы она также обнаруживала пики на границе. Вот снимок одного из таких случаев. Как мы видим, метод обнаружил 10 пиков, но я хочу, чтобы общие пики были 12, включая пики на границах. Есть ли способ сделать это? Также я не хочу включать индексы начала и конца просто так. Я буду использовать этот метод на большом наборе данных, поэтому ищу универсальное решение c.

coordinates = df.loc[:, columns].sum(axis=1)
peaks_max_y = argrelextrema(coordinates.to_numpy(), np.greater)[0]

index = np.arange(df.shape[0])
_ = plt.plot(index, coordinates, 'b-', linewidth = 2)
_ = plt.plot(index[peaks_max_y], coordinates[peaks_max_y], 'ro', label = 'minima peaks')
plt.title(pid)

enter image description here

1 Ответ

0 голосов
/ 26 февраля 2020

Поскольку find_peaks позаботится об остальных точках, как насчет проверки наклона только в конечных точках? Если наклон слева отрицателен, у вас есть пик в начале. Точно так же, если он в конце положительный, у вас есть пик.

Примерно так:

if np.sign(np.diff(y))[0] < 0:
    # accept y[0] as peak
if np.sign(np.diff(y))[-1] > 0:
    # accept y[-1] as peak
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...