我有一個信號作為數據幀,可以說: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
提交
取消