我有一列数组,这些数字呈现周期性波动,但是其中存在大量毛刺,求其平滑近似,用python
时间: 2024-03-27 11:38:45 浏览: 17
你可以使用滑动平均法对这列数组进行平滑处理。滑动平均法是一种基本的时间序列平滑方法,它的思路是将一段时间内的数据取平均值,然后将平均值作为这段时间的近似值。具体步骤如下:
1. 导入所需库:
```python
import numpy as np
import matplotlib.pyplot as plt
```
2. 生成带有毛刺的曲线数据,例如:
```python
x = np.linspace(0, 10 * np.pi, 500)
y = np.sin(x) + 0.3 * np.sin(10 * x) + 0.2 * np.sin(20 * x) + 0.1 * np.random.randn(x.size)
```
3. 定义滑动窗口的大小,例如:
```python
window_size = 10
```
4. 对y进行滑动平均处理:
```python
y_smooth = np.zeros_like(y)
for i in range(window_size, y.size - window_size):
y_smooth[i] = np.mean(y[i - window_size:i + window_size])
```
5. 绘制原始数据和平滑后的数据的图像进行对比:
```python
plt.plot(x, y, label='Original')
plt.plot(x, y_smooth, label='Smoothed')
plt.legend()
plt.show()
```
这样就可以快速求得平滑近似的数据了。你可以调整滑动窗口的大小来获得更好的平滑效果。