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

Python用range()生成滑动窗口序列丢失末尾数据如何补全?

滑动窗口序列生成(末尾补全版)实现方案

原函数问题说明

原有实现的range终止条件设为len(csv)-window_size,仅会生成数据完全匹配窗口长度的窗口,当末尾剩余数据长度不足窗口大小时就会直接停止遍历,导致尾部数据丢失。

修改后实现代码

通用列表版本

如果输入的csv数据为Python列表格式,可直接使用以下实现,默认在窗口末尾填充0,你可以根据需求调整填充值、填充位置:

def create_sequences(csv, window_size, stride, pad_value=0):
    sequences = []
    data_len = len(csv)
    # 遍历所有步长对应的起始位置
    for i in range(0, data_len, stride):
        window = csv[i:i+window_size]
        # 长度不足时补全
        if len(window) < window_size:
            pad_length = window_size - len(window)
            # 末尾填充,如需头部填充改为 window = [pad_value]*pad_length + window 即可
            window += [pad_value] * pad_length
        sequences.append(window)
    return sequences

Numpy数组版本

如果输入为Numpy数组格式,可使用np.pad更便捷地实现填充:

import numpy as np

def create_sequences(csv_arr, window_size, stride, pad_value=0):
    sequences = []
    data_len = len(csv_arr)
    for i in range(0, data_len, stride):
        window = csv_arr[i:i+window_size]
        if len(window) < window_size:
            pad_length = window_size - len(window)
            # (0, pad_length)表示头部不填充、末尾填充pad_length位,如需头部填充改为(pad_length, 0)即可
            window = np.pad(window, (0, pad_length), mode='constant', constant_values=pad_value)
        sequences.append(window)
    return np.array(sequences)

效果验证

以你给出的示例验证:数据总长度115、窗口大小30、步长20时,修改后的函数会依次生成如下窗口:

  • 0-30(完整窗口)
  • 20-50(完整窗口)
  • 40-70(完整窗口)
  • 60-90(完整窗口)
  • 80-110(完整窗口)
  • 100-130(实际取100-115共15位,剩余15位自动填充)
    所有原始数据都被覆盖,不会出现丢失问题。

内容的提问来源于stack exchange,提问作者Muhammad Anas Raza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:48:04