用python写一个smooth函数带注释,可以实现一维数据高斯滤波、均值滤波
时间: 2023-03-31 15:02:37 浏览: 178
好的,以下是 Python 实现的 smooth 函数,可以实现一维数据的高斯滤波和均值滤波:
```python
import numpy as np
from scipy.ndimage.filters import gaussian_filter1d
def smooth(data, window_size=5, method='gaussian'):
"""
对一维数据进行平滑处理
参数:
data: 一维数据
window_size: 窗口大小,默认为 5
method: 平滑方法,可选 'gaussian' 或 'mean',默认为 'gaussian'
返回值:
平滑后的一维数据
"""
if method == 'gaussian':
return gaussian_filter1d(data, window_size)
elif method == 'mean':
return np.convolve(data, np.ones(window_size)/window_size, mode='same')
else:
raise ValueError("不支持的平滑方法")
```
其中,`data` 是需要平滑处理的一维数据,`window_size` 是窗口大小,`method` 是平滑方法,可以选择高斯滤波或均值滤波。如果选择高斯滤波,则使用 `scipy.ndimage.filters` 中的 `gaussian_filter1d` 函数实现;如果选择均值滤波,则使用 `numpy` 中的 `convolve` 函数实现。
阅读全文