You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何识别含噪声时序数据中低数值低噪声时段的起止索引

可以通过「数值阈值+波动阈值」的双条件滑动窗口判定来提取目标时段,具体实现如下:

  • 首先设定两个判定规则:
    1. 滑动窗口内的数值均值低于提前设定的数值阈值,筛选出低数值区间
    2. 滑动窗口内的数值标准差低于提前设定的波动阈值,筛选出低噪声区间
  • 对所有符合条件的连续位置做合并,即可得到目标时段的起止索引

完整实现代码:

import numpy as np
import pandas as pd

# 测试用输入数据
arr = np.array([8,9,7,3,6,3,2,1,2,3,1,2,3,2,2,3,2,2,5,7,8,9,15,20,21])
# 滑动窗口大小,可根据实际噪声情况调整,这里取3适配1分钟间隔的采样
window_size = 3
# 数值阈值:低于该值判定为低数值,可根据实际业务场景调整
mean_threshold = 4
# 波动阈值:低于该值判定为低噪声,可根据实际数据噪声水平调整
std_threshold = 2

# 计算滑动窗口的均值和标准差
series = pd.Series(arr)
rolling_mean = series.rolling(window=window_size, center=True).mean()
rolling_std = series.rolling(window=window_size, center=True).std()

# 标记符合双条件的位置
valid_mask = (rolling_mean < mean_threshold) & (rolling_std < std_threshold)

# 提取连续符合条件的区间起止索引
valid_index = np.where(valid_mask)[0]
if len(valid_index) == 0:
    print("未找到符合条件的时段")
else:
    # 定位连续区间的断点
    breaks = np.diff(valid_index) > 1
    start_indices = np.insert(valid_index[1:][breaks], 0, valid_index[0])
    end_indices = np.append(valid_index[:-1][breaks], valid_index[-1])
    # 输出结果
    for idx, (start, end) in enumerate(zip(start_indices, end_indices)):
        print(f"低数值低噪声时段{idx+1}:起始索引{start},结束索引{end}")

针对你提供的测试数据,运行后输出结果为:
低数值低噪声时段1:起始索引6,结束索引17
如果是实际的全天分钟级数据,只需要调整三个参数(窗口大小、数值阈值、波动阈值)适配你的数据特征即可。

内容的提问来源于stack exchange,提问作者ManInMoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:39:02