comment lisser une courbe en python

J'ai une entropie de la courbe (1d tableau numpy), mais cette courbe a beaucoup de bruit.
Je voudrais supprimer le bruit avec un lissage.

C'est l'intrigue de ma courbe:
comment lisser une courbe en python

J'ai essayé de résoudre ce problème de fabrication d'un produit de convolution avec un de Kaiser-Bessel de filtre:

gaussian_curve = window_kaiser(windowLength, beta=20)  # kaiser filter
gaussian_curve = gaussian_curve / sum(gaussian_curve)

for i in range(0, windows_number):
     start = (i * step) + 1
     end = (i * step) + windowLength
     convolution[i] = (np.convolve(entropy[start:end + 1], gaussian_curve, mode='valid'))
     entropy[i] = convolution[i][0]

mais ce code renvoie cette erreur:

File "/usr/lib/python2.7/dist-packages/numpy/core/numeric.py", line 822, in convolve
    raise ValueError('v cannot be empty')
ValueError: v cannot be empty

la numpy.convolve opérateur avec les "valides" mode, renvoie l'élément central du chevauchement mais, dans ce cas, le retour d'un élément vide.

est-il un moyen simple d'appliquer un lissage?

merci!

OriginalL'auteur elviuz | 2014-04-10