python处理孤立的异常点

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

处理的代码以下:code

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)

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

相关文章
相关标签/搜索