python 去除曲线上的离群点
时间: 2023-09-15 22:15:23 浏览: 48
去除曲线上的离群点可以使用统计学中的离群值检测方法,例如Z分数法、箱线图法等。下面是一个使用箱线图法去除曲线上离群点的示例代码:
``` python
import numpy as np
import matplotlib.pyplot as plt
# 生成一组带有离群点的曲线数据
x = np.linspace(-10, 10, 201)
y = np.sin(x) + 0.2 * np.random.randn(201)
y[25] = 5.0 # 添加一个离群点
# 绘制原始曲线
plt.plot(x, y, 'b-', label='Original curve')
# 计算箱线图中的上下限
q1, q3 = np.percentile(y, [25, 75])
iqr = q3 - q1
upper_limit = q3 + 1.5 * iqr
lower_limit = q1 - 1.5 * iqr
# 去除离群点
y_clean = np.where((y > lower_limit) & (y < upper_limit), y, np.nan)
x_clean = np.where((y > lower_limit) & (y < upper_limit), x, np.nan)
# 绘制去除离群点后的曲线
plt.plot(x_clean, y_clean, 'r-', label='Cleaned curve')
plt.legend()
plt.show()
```
上述代码中,我们首先生成一组带有离群点的曲线数据,并用蓝色实线绘制出来。然后,使用`numpy.percentile`函数计算出箱线图中的上下限,再使用`numpy.where`函数去除离群点,将其替换为`numpy.nan`。最后,使用红色实线绘制出去除离群点后的曲线。