gpt4 book ai didi

python - 如何在 python 中搜索具有公差的模式

转载 作者:行者123 更新时间:2023-11-28 22:51:08 25 4
gpt4 key购买 nike

这是我的问题。我正在尝试从一个实时系统收集输出,该实时系统以 1 的步长将其输出从 55 递减到 0。我正在记录这些数据。我已经捕获了它返回的所有数据 55,54,53,....3,2,1,。但由于系统滞后,一些样本会重复,一些样本会丢失例如,我得到

[55, 53, 52, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 39, 38, 38, 36, 36, 34, 33, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 20, 18, 17, 15, 14, 13, 13, 12, 11, 10, 9, 8, 7, 7, 5, 4, 3, 2, 1]

所以,我有一个模式(55 比 0),但有些样本丢失了,有些样本重复了。有什么方法可以编写脚本并提取它们。

我的目标是验证 55 到 0 是否以 1 为步长发生(但这应该考虑到由于采样而导致的任何单个遗漏和重复)这是代码:

for x in range(len(b)-1): 
e += b[x] - b[x+1]
print x,b[x]-b[x+1], b[x], b[x+1]
print 'reached %d count in %d decrements' % (e, len(b)-1)

最佳答案

如果我理解得很好,你可能想使用 numpy diff 函数:

In [1]: import numpy as np 

In [2]: A = [55, 53, 52, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 39, 38, 38, 36, 36, 34, 33, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 20, 18, 17, 15, 14, 13, 13, 12, 11, 10, 9, 8, 7, 7, 5, 4, 3, 2, 1]


In [3]: np.diff(A)
Out[3]:
array([-2, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, 0,
-2, 0, -2, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 0, -2, -1, -2, -1, -1, 0, -1, -1, -1, -1, -1, -1, 0, -2, -1,
-1, -1, -1])

其中 -1 是预期步骤 1,-2 是缺失步骤,0 是重复。如果您想知道问题出在哪里:

In [4]: np.where(np.diff(A) != -1)[0] # [0] because it's 1D array
Out[4]: array([ 0, 2, 14, 16, 17, 18, 19, 21, 35, 36, 38, 41, 48, 49])

如果不清楚,请告诉我。

关于python - 如何在 python 中搜索具有公差的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21986432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com