Interpolation Spline avec Python
J'ai écrit le code suivant pour effectuer une interpolation spline:
import numpy as np
import scipy as sp
x1 = [1., 0.88, 0.67, 0.50, 0.35, 0.27, 0.18, 0.11, 0.08, 0.04, 0.04, 0.02]
y1 = [0., 13.99, 27.99, 41.98, 55.98, 69.97, 83.97, 97.97, 111.96, 125.96, 139.95, 153.95]
x = np.array(x1)
y = np.array(y1)
new_length = 25
new_x = np.linspace(x.min(), x.max(), new_length)
new_y = sp.interpolate.interp1d(x, y, kind='cubic')(new_x)
mais je suis arriver:
ValueError: A value in x_new is below the interpolation range.
dans interpolate.py
Toute aide serait appréciée.
J'ai essayé de l'exécution de votre code et a obtenu
Non, vous devez l'importer: numpy comme np, scipy que sp, scipy.interpoler
name 'np' is not defined
. Est-ce l'ensemble de votre programme?Non, vous devez l'importer: numpy comme np, scipy que sp, scipy.interpoler
OriginalL'auteur Hellfish | 2012-08-07
Vous devez vous connecter pour publier un commentaire.
De la scipy documentation sur scipy.interpoler.interp1d:
Le problème est que les valeurs de x ne sont pas de plus en plus monotone. En fait, ils sont monotone décroissante. Laissez-moi savoir si cela fonctionne et si c'est toujours le calcul que vous recherchez.:
sorted()
vous pourriez justex1.reverse()
ety1.reverse()
.Merci!!!! Il a travaillé.
merci pour l'attraper.
Dans cet exemple, le x1,y1 paires sont brisées par le tri du tableau x1. Y1 tableau doit être déplacés de la même façon que le tableau x1.
OriginalL'auteur ciferkey
Vous pouvez obtenir cela de la manière suivante:
ValueError: Expect x to be a 1-D sorted array_like.
Pour moi, il fonctionne très bien avec Python 2.7 et Python 3.5. J'ai numpy 1.11 et scipy 0.17.0. Les versions utilisez-vous?
En effet, avec Python 3.5 numpy 1.11.3 et scipy 0.17.1 il fonctionne. Il travaille également avec scipy 0.18.1 et numpy 1.11.3, mais rompt ensuite avec scipy 0.19.1. Apparemment,
interp1d
est maintenant obsolète de toute façon.merci.
interp1d
ne semble pas être obsolète, mais en effet il ne parvient pas à scipy 0,19, et travaille avec 0.18.1.Voir la discussion ici, interp1d est maintenant UnivariateSpline github.com/scipy/scipy/issues/4304
OriginalL'auteur Martin Thoma