为了账号安全,请及时绑定邮箱和手机立即绑定

基于布尔值扩展选择

基于布尔值扩展选择

精慕HU 2023-03-08 14:19:39
我有一个信号作为数据帧,可以说: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,等等。


查看完整回答
反对 回复 2023-03-08
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号