查找序列并删除先前的条目

问题描述 投票:2回答:2

我对代码的优化有疑问。

Signal = pd.Series([1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0])

我有一个包含周期性位码的熊猫系列。我的目的是删除所有在特定序列之前开始的条目,例如1,1,0,0。因此,在我的示例中,我期望像这样减少序列:

[1, 1, 0, 0, 1, 1, 0, 0]

我已经有一个1、1的解决方案,但是它不是很好,在我的示例中也不容易修改:1,1,0,0

    i = 0
    bool = True
    while bool:
        a = Signal.iloc[i]
        b = Signal.iloc[i + 1]
        if a == 1 and b == 1:
            bool = False
        else:
            i = i + 1

   Signal = Signal[i:]

感谢您的帮助。

python pandas numpy series
2个回答
2
投票

我们可以使用view_as_windows来滚动查看该系列的窗口视图,检查该序列是否相等,并使用view_as_windows来找到第一个匹配项:

argmax

0
投票

我将使用正则表达式-使用argmax来识别模式。

例如:

from skimage.util import view_as_windows

seq = [1, 1, 0, 0]
m = (view_as_windows(Signal.values, len(seq))==seq).all(1)
Signal[m.argmax():]

3     1
4     1
5     0
6     0
7     1
8     1
9     0
10    0
dtype: int64

将产生一个group(1)输出,该输出由1,1,0,0模式之后的所有数字组成。

© www.soinside.com 2019 - 2024. All rights reserved.