假设我有两个numpy数组
array1 = np.array([1,2,3,10,11,12,13,14,15,16]) array2 = np.array([1,2,10,11,12,13,14,15])
每个数组的值都是连续的,但由于测量中的噪声,第一个值除外删除干扰值的最佳方法是什么?
2q5ifsrm1#
一种选择是使用diff和 *boolean数组索引 *:
diff
out = array1[(np.diff(array1, prepend=True) > 1).cumsum() == 1]
输出:
print(out) #[10 11 12 13 14 15 16]
lf5gs5x22#
您可以反转数组并检查绝对差何时不是1:
def remove_noise(arr): idx = len(arr) - np.argmax(np.abs(np.diff(np.flip(arr))) != 1) - 1 return arr[idx:]
使用方法:
>>> remove_noise(array1) array([10, 11, 12, 13, 14, 15, 16]) >>> remove_noise(array2) array([10, 11, 12, 13, 14, 15])
2条答案
按热度按时间2q5ifsrm1#
一种选择是使用
diff
和 *boolean数组索引 *:输出:
lf5gs5x22#
您可以反转数组并检查绝对差何时不是1:
使用方法: