我希望在没有瞬变影响和丢失原始数据数组长度的情况下平滑我的数据。
使用下面的代码,我可以获得没有数组长度损失的平滑,但我在末端得到了瞬态。
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)
这当然更好,但这意味着当我进一步平滑连续减法时,我将无法从原始数据中减去它,因为数组长度会不同。
关于如何将两者结合以获得最佳平滑功能的任何想法?