scipy.signal.savgol_filter¶
- scipy.signal.savgol_filter(x, window_length, polyorder, deriv=0, delta=1.0, axis=- 1, mode='interp', cval=0.0)[源代码]¶
将萨维茨基-格雷过滤应用于数组。
这是一维过滤。如果 x 维度大于1, axis 确定沿其应用过滤的轴。
- 参数
- xarray_like
要筛选的数据。如果 x 不是单精度或双精度浮点数组,它将被转换为
numpy.float64
在过滤之前。- window_length集成
过滤窗口的长度(即系数数)。 window_length 必须是正的奇数。如果 mode 是“Interp”, window_length 必须小于或等于 x 。
- polyorder集成
用于拟合样本的多项式的阶数。 polyorder 必须小于 window_length 。
- deriv整型,可选
要计算的导数的顺序。这必须是非负整数。默认值为0,表示对数据进行过滤,不做区分。
- delta浮动,可选
将应用过滤的样本的间距。仅当Deriv>0时才使用此选项。默认值为1.0。
- axis整型,可选
数组的轴 x 在此基础上实施“过滤”战略。默认值为-1。
- mode字符串,可选
必须是‘镜像’、‘常量’、‘最近’、‘包裹’或‘Interp’。这确定要用于应用过滤的填充信号的分机类型。什么时候 mode 为“常量”,则填充值由 cval 。有关“镜像”、“常量”、“换行”和“最近”的更多详细信息,请参阅注释。当选择“interp”模式(默认)时,不使用任何扩展。取而代之的是,一个学位 polyorder 多项式拟合到最后 window_length 值,此多项式用于计算最后一个 window_length // 2 输出值。
- cval标量,可选
值填充到输入的边缘,如果 mode 是“恒定的”。默认值为0.0。
- 退货
- y :ndarray,形状与 xndarray,形状与
过滤后的数据。
注意事项
有关 mode 选项:
- “镜像”:
以相反的顺序重复边上的值。不包括最接近边的值。
- “最近”:
扩展名包含最接近的输入值。
- ‘常量’:
扩展包含由 cval 论点。
- ‘WRAP’:
扩展包含数组另一端的值。
例如,如果输入是 [1、2、3、4、5、6、7、8] ,以及 window_length 为7,下面显示了各种类型的扩展数据 mode 选项(假设 cval 为0):
mode | Ext | Input | Ext -----------+---------+------------------------+--------- 'mirror' | 4 3 2 | 1 2 3 4 5 6 7 8 | 7 6 5 'nearest' | 1 1 1 | 1 2 3 4 5 6 7 8 | 8 8 8 'constant' | 0 0 0 | 1 2 3 4 5 6 7 8 | 0 0 0 'wrap' | 6 7 8 | 1 2 3 4 5 6 7 8 | 1 2 3
0.14.0 新版功能.
示例
>>> from scipy.signal import savgol_filter >>> np.set_printoptions(precision=2) # For compact display. >>> x = np.array([2, 2, 5, 2, 1, 0, 1, 4, 9])
过滤,窗长为5,2次多项式。对所有其他参数使用默认值。
>>> savgol_filter(x, 5, 2) array([1.66, 3.17, 3.54, 2.86, 0.66, 0.17, 1. , 4. , 9. ])
请注意,x中的最后五个值是抛物线的样本,因此当mode=‘interp’(默认值)与Polyorder=2一起使用时,最后三个值保持不变。比较一下,例如, mode='nearest' :
>>> savgol_filter(x, 5, 2, mode='nearest') array([1.74, 3.03, 3.54, 2.86, 0.66, 0.17, 1. , 4.6 , 7.97])