选择连续值numpy数组

vnjpjtjt  于 2023-04-30  发布在  其他
关注(0)|答案(2)|浏览(125)

假设我有两个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])

每个数组的值都是连续的,但由于测量中的噪声,第一个值除外
删除干扰值的最佳方法是什么?

2q5ifsrm

2q5ifsrm1#

一种选择是使用diff和 *boolean数组索引 *:

out = array1[(np.diff(array1, prepend=True) > 1).cumsum() == 1]

输出:

print(out)

#[10 11 12 13 14 15 16]
lf5gs5x2

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])

相关问题