猿问

基于布尔值扩展选择

我有一个信号作为数据帧,可以说:


import pandas as pd

import numpy as np


signal = 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]. 有没有一种方法可以快速执行此操作而不必遍历各个行?


精慕HU
浏览 107回答 1
1回答

FFIVE

您可以使用以下方法选择周围的元素shift:signal[(signal.Signal > 0.5) | (signal.Signal.shift() > 0.5) | (signal.Signal.shift(-1) > 0.5)]对于随机数据,部分输出是:6   0.5262647   0.6130498   0.1069399   0.91790610  0.87556311  0.26923614  0.23196115  0.75769716  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,等等。
随时随地看视频慕课网APP

相关分类

Python
我要回答