我对代码的优化有疑问。
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:]
感谢您的帮助。
我们可以使用view_as_windows
来滚动查看该系列的窗口视图,检查该序列是否相等,并使用view_as_windows
来找到第一个匹配项:
argmax
我将使用正则表达式-使用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模式之后的所有数字组成。