поиск максимальных значений и фильтрация первых значений

#python #pandas #scipy

#python #панды #scipy

Вопрос:

Я использую argrelextrema для поиска максимального значения в списке

 import  pandas as pd
from scipy.signal import argrelextrema
import numpy as np
noise_filter = 3
numbers = pd.Series ([101.5,100,101.1,99,105,22,21,20, 19]).to_numpy()
res = argrelextrema(numbers, np.greater_equal, order = noise_filter, mode = 'clip')[0]
print (res)
  

В этом примере он возвращает

 [0 4]
  

Я хочу фильтровать индексы, если они меньше, чем noise_filter .
Таким образом, 0 будет отфильтровано.

Как я могу сделать это внутри строки

  res = argrelextrema(numbers, np.greater_equal, order = noise_filter, mode = 'clip')[0]
  

Так что это будет выглядеть

 res = argrelextrema(numbers, np.greater_equal amp; (index > noise_filter), order = noise_filter, mode = 'clip')[0]
  

Простое решение, когда я создаю фрагмент res

 res = res[noise_filter:]
  

мне это не подходит.

Ответ №1:

если вы хотите отфильтровать все, что находится ниже вашего noise_filter

 filtered = [n for n in res if n > noise_filter]