Фильтровать массив по последнему значению Toleranz - PullRequest
0 голосов
/ 19 декабря 2018

Я использую Python 3.7.У меня есть массив, как это:

L1 = [1,2,3,-10,8,12,300,17]

Теперь я хочу отфильтровать значения (-10 и 300 не в порядке)

Значения в массиве могут отличаться, но всегдасчитать вверх или вниз.

Имеет ли Python 3 встроенную функцию для этого?

Результат должен выглядеть следующим образом:

  L1 = [1,2,3,8,12,17]

Спасибо!

Редактировать из комментариев:

Я хочу сохранить каждый элементесли это только определенное расстояние (допустимое отклонение: 10 fe) от предыдущего.

1 Ответ

0 голосов
/ 19 декабря 2018

Ваш массив a list.Вы можете использовать встроенные функции :

L1 = [1,2,3,-10,8,12,300,17]

min_val = min(L1)  # -10
max_val = max(L1)  # 300
p = list(filter(lambda x: min_val < x < max_val, L1))  # all x not -10 or 300

print(p) # [1, 2, 3, 8, 12, 17]

Доку:


Если вы хотите вместо этого использовать инкрементальный фильтр, просмотрите список точек данных и решитеесли оставить или нет:

delta = 10
result = []
last = L1[0] # first one as last value  .. check the remaining list L1[1:]
for elem in L1[1:]:
    if last-delta < elem < last+delta:
        result.append(last)
        last = elem    

if elem-delta < result[-1] < elem+delta :
    result.append(elem)

print(result) # [1, 2, 3, 8, 12, 17]
...