我有一个信号作为数据帧,可以说:import pandas as pdimport numpy as npsignal = pd.DataFrame(columns=["Signal"], data=np.random.random(100))和一个简单的面具,如:mask = signal["Signal"] > 0.5我现在想要选择掩码为真的信号值,以及围绕该选择的 N 值。因此,如果我的掩码是[False, False, True, False, True, False, False]且 N=1,则选择应基于类似[False, True, True, True, True, True, False]. 有没有一种方法可以快速执行此操作而不必遍历各个行?
1 回答

FFIVE
TA贡献1797条经验 获得超6个赞
您可以使用以下方法选择周围的元素shift:
signal[(signal.Signal > 0.5) | (signal.Signal.shift() > 0.5) | (signal.Signal.shift(-1) > 0.5)]
对于随机数据,部分输出是:
6 0.526264
7 0.613049
8 0.106939
9 0.917906
10 0.875563
11 0.269236
14 0.231961
15 0.757697
16 0.227037
另一种方法是使用rollingwith center=True。如果在给定的大小为 N 的窗口中(在本例中为 N=3),至少有一项大于阈值 - 计算当前行。
THRESHOLD = 0.5
signal[signal.Signal.rolling(3, center = True).max() > THRESHOLD]
N=3 表示您正在查看当前行 + 任一侧的一行。N=5 表示当前行 + 2,等等。
添加回答
举报
0/150
提交
取消