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

如何在2000采样点的窗口上执行Windowed Min-max transformation而非全量归一化

窗口式Min-Max归一化实现方案

直接针对你要的2000采样点窗口需求,分两种常用场景提供实现代码:

非重叠固定窗口归一化

每2000个采样点作为独立窗口,各自拟合归一化参数,和你原有全量归一化的逻辑完全一致,仅缩小了拟合范围:

import numpy as np
from sklearn.preprocessing import MinMaxScaler

window_size = 2000
n_samples, n_features = X.shape
X_window_norm = np.zeros_like(X)

for start_idx in range(0, n_samples, window_size):
    end_idx = start_idx + window_size
    # 仅提取当前窗口数据拟合scaler
    scaler = MinMaxScaler()
    X_window_norm[start_idx:end_idx] = scaler.fit_transform(X[start_idx:end_idx])

上述代码会自动处理最后不足2000采样点的尾部窗口,输出数组形状和原X完全一致。

滑动窗口归一化

如果需要每个采样点的归一化参数基于其前2000个相邻采样点计算(即窗口随采样点滑动),可以用pandas滚动窗口实现,代码更简洁:

import pandas as pd

window_size = 2000
df = pd.DataFrame(X)
# 计算滚动窗口内的最值
rolling_min = df.rolling(window=window_size, min_periods=1).min()
rolling_max = df.rolling(window=window_size, min_periods=1).max()
# 执行归一化,自动处理除0异常
X_slide_norm = ((df - rolling_min) / (rolling_max - rolling_min).replace(0, 1)).values

参数min_periods=1用于处理前1999个采样点窗口不足的场景,如果你要求窗口满2000才计算归一化值,移除该参数即可,前1999个点位会返回NaN。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:09:03