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

Python中一维光谱数据精准重采样(含加权下采样)方案问询

光谱数据标准化波长刻度的重采样问题

我有两台不同光谱仪采集的均匀间隔测量数据,需要将它们重采样到标准化的1nm波长刻度:

  • 一台需从约3nm分辨率上采样至1nm,这块用插值就能实现,没有问题;
  • 另一台需从约0.3nm分辨率下采样至1nm,但这台的数据存在噪声,不想采用仅取近邻点的插值方式,避免丢失中间数据的有效信息。

理想下采样方案

理论1nm步长光谱的像素边界

波长索引[nm]像素左边界[nm]像素右边界[nm]
400399.5400.5
401400.5401.5
.........

实际0.3nm分辨率光谱仪的像素边界

波长索引[nm]像素左边界[nm]像素右边界[nm]
400399.85400.15
400.3400.15400.45
400.6400.45400.75
400.9400.75401.05
401.2401.05401.35
401.5401.35401.65
.........

(注:原数据中401.2nm的左边界疑似笔误,已修正为401.05nm)

以理论401nm数据点为例,计算逻辑如下:

  • 完全落在理论像素区间(400.5-401.5)内的400.9nm、401.2nm数据点,直接取平均;
  • 与理论像素部分重叠的400.6nm(重叠区间0.25nm,占自身像素宽度0.3nm的比例为0.25/0.3)、401.5nm(重叠区间0.15nm,占比0.15/0.3)数据点,按重叠比例加权后纳入计算;
    这本质上是带梯形窗的移动窗口滤波。

已排除的不适用函数

  • scipy.signal.resample:假设数据为周期性,不符合光谱数据的非周期特性;
  • scipy.signal.resample_poly:仅支持整数倍重采样,无法匹配目标1nm刻度的非整数倍转换需求;
  • scipy.signal.decimate:同样只支持整数倍重采样,精度达不到要求;
  • pandas.Series.resample:仅针对时间维度设计,不适用波长轴的重采样;
  • scipy.interpolate.interp1d:要求曲线经过所有带噪声的原始数据点,无法利用过采样数据进行降噪。

我知道可以结合scipy.signal.decimate(因子3,精度不足)和插值来实现近似效果,但希望找到能直接处理非整数倍、甚至支持非均匀数据的Python函数,请问是否存在这类工具?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 02:37:11