我希望在没有瞬态效应和丢失原始数据数组长度的情况下平滑数据。
使用下面的代码我可以获得没有数组长度丢失的平滑,但最终会得到瞬态。
import numpy as np
def continuum(y,N):
return np.convolve(y, np.ones((N,))/N, mode='same')
plt.figure()
plt.errorbar(x1,y1,yerr=err1,zorder=1)
cont = continuum(y1,10)
plt.plot(x1,cont,'r-',zorder=2)
使用以下内容,我可以在没有瞬态的情况下进行平滑,但它会减少生成的数组长度。
def continuum(x,y,N):
contin = np.convolve(y, np.ones((N,))/N, mode='valid')
x_new = np.linspace(x[0],x[-1],len(contin))
return x_new,contin
plt.figure()
plt.errorbar(x1,y1,yerr=err1,zorder=1)
这肯定更好但是这意味着当我进一步平滑连续减法时,由于数组长度不同,我无法从原始数据中减去它。
关于如何将两者结合起来以获得最佳平滑功能的任何想法?