python - 如何平滑Python中的数据?

标签 python numpy scipy smoothing

我正在尝试使用 SciPy 的一维曲线 B 样条表示来平滑如下所示的散点图。有资料here .

enter image description here

我使用的代码是:

import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate

data = np.genfromtxt("spline_data.dat", delimiter = '\t')
x = 1000 / data[:, 0]
y = data[:, 1]
x_int = np.linspace(x[0], x[-1], 100)
tck = interpolate.splrep(x, y, k = 3, s = 1)
y_int = interpolate.splev(x_int, tck, der = 0)

fig = plt.figure(figsize = (5.15,5.15))
plt.subplot(111)
plt.plot(x, y, marker = 'o', linestyle='')
plt.plot(x_int, y_int, linestyle = '-', linewidth = 0.75, color='k')
plt.xlabel("X")
plt.ylabel("Y")
plt.show()

我尝试更改样条的顺序和平滑条件,但我没有得到平滑的图。

B 样条插值应该可以平滑数据,但有什么问题吗?有没有其他方法可以平滑此数据?

最佳答案

使用较大的平滑参数。例如,s=1000:

tck = interpolate.splrep(x, y, k=3, s=1000)

这会产生:

interpolation

关于python - 如何平滑Python中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30443883/

相关文章:

python - 删除 numpy 语句中的 for 循环

python - 是否可以使用 numpy 中可用的函数将二维数组修补到子数组的数组中?

scipy - NetworkX 中拉普拉斯算子的特征值

python - 使用opencv加载32位整数图像

python - 获取已安装共享的 OSX 中的 'unc' 路径

python - 在 Windows 上通过命令行运行 Jupyter

python - CRC32 未计算正确的校验和?

python - Scipysolve_banded矩阵使用的求解方法

python - 使用 loadtxt 读取带有字符串和 float 的文件

python - 用于电压/时间数据的 NumPy/SciPy FFT