python处理孤立的异常点

假设有一个列表,a = [61, 40, 70, 80, 86, 50, 88, 33, 76, 64],保存的是设备的状态值随时间的变化,超过60即为异常,但是对于孤立的异常点,我们需要将其忽略,只有连续的异常点才认为是真正的异常,需要统计异常的次数(当然也可以有其他的操作,删除孤立的异常点等等)。

处理的代码如下:

def get_above_threshold_num(device_status, threshold):
    if not isinstance(device_status, list) or not isinstance(threshold, int):
        return
    num = 0
    count = len(device_status)
    for index, value in enumerate(device_status):
        if value >= threshold:
            if (0 <= index - 1 < count and device_status[index - 1] >= threshold) or (0 <= index + 1 < count and device_status[index + 1] >= threshold):
                num += 1
    return num


if __name__ == "__main__":
    a = [61, 40, 70, 80, 86, 50, 88, 33, 76, 64]
    b = get_above_threshold_num(a, 80)
    print(b)

思路即就是遍历列表中的元素,如果大于等于阈值,则找到它的前一个元素和后一个元素,只要有一个元素是大于等于阈值的,则进行统计。

posted @ 2019-07-15 22:03  永恒de记忆  阅读(1629)  评论(0编辑  收藏  举报