按最后一个值Toleranz过滤数组

时间:2018-12-19 17:10:48

标签: python-3.x filtering

我使用Python 3.7。 我有一个像这样的数组:

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

现在我要过滤值(-10和300不合适)

数组中的值可能不同,但总是递增或递减。

Python 3是否具有集成功能?

结果应如下所示:

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

谢谢!

根据评论进行编辑:

  

如果每个元素与前一个元素之间只有一定距离(公差:10 f.e.),我想保留每个元素。

1 个答案:

答案 0 :(得分:1)

您的数组为a list。您可以使用built in functions

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]

Doku:


如果要使用增量过滤器,则可以遍历数据点列表并决定是否保留:

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]