def find_anomalous(X, M1, M2): K = [] for i in range(1, len(X)): diff = X[i] - X[i-1] if diff < M1 or diff > M2: K.append(i) return tuple(K) def correct_signal(X, K): X1 = X.copy() for i in K: if i == len(X)-1: X1[i] = X[i-1] else: X1[i] = 0.5 * (X[i-1] + X[i+1]) return X1