我有一個(gè)信號(hào)作為數(shù)據(jù)幀,可以說:import pandas as pdimport numpy as npsignal = pd.DataFrame(columns=["Signal"], data=np.random.random(100))和一個(gè)簡單的面具,如:mask = signal["Signal"] > 0.5我現(xiàn)在想要選擇掩碼為真的信號(hào)值,以及圍繞該選擇的 N 值。因此,如果我的掩碼是[False, False, True, False, True, False, False]且 N=1,則選擇應(yīng)基于類似[False, True, True, True, True, True, False]. 有沒有一種方法可以快速執(zhí)行此操作而不必遍歷各個(gè)行?
1 回答

FFIVE
TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用以下方法選擇周圍的元素shift:
signal[(signal.Signal > 0.5) | (signal.Signal.shift() > 0.5) | (signal.Signal.shift(-1) > 0.5)]
對(duì)于隨機(jī)數(shù)據(jù),部分輸出是:
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),至少有一項(xiàng)大于閾值 - 計(jì)算當(dāng)前行。
THRESHOLD = 0.5
signal[signal.Signal.rolling(3, center = True).max() > THRESHOLD]
N=3 表示您正在查看當(dāng)前行 + 任一側(cè)的一行。N=5 表示當(dāng)前行 + 2,等等。
添加回答
舉報(bào)
0/150
提交
取消