3 votes

Python Scipy interpolate warning message

J'essaie d'ajuster une surface spline à des données 2D en utilisant scipy interpolate.

from scipy import interpolate

Utilisation

 # fit spline to surface
 xnew, ynew = np.mgrid[x[0]:x[-1]:100j, y[0]:y[-1]:100j]
 tck = interpolate.bisplrep(X, Z, array)
 znew = interpolate.bisplev(xnew[:,0], ynew[0,:], tck)

Mais je reçois les messages d'avertissement suivants :

C:\Users...\AppData\Local\Continuum\Anaconda3\lib\site -Paquets \scipy\interpolate_fitpack_impl.py :975 : Avertissement d'exécution : Un résultat théoriquement impossible lors de la recherche d'un spline de lissage avec fp = s. Causes probables : s trop petit ou eps mal choisi. mal choisi. (abs(fp-s)/s>0.001) kx,ky=3,3 nx,ny=16,18 m=610 fp=18417275715.663498 s=575.071502 warnings.warn(Runti C:\Users...\AppData\Local\Continuum\Anaconda3\lib\site -Paquets \scipy\interpolate_fitpack_impl.py :975 : RuntimeWarning : L'espace de stockage requis dépasse l'espace de stockage disponible. disponible. Causes probables : nxest ou nyest trop petit ou s trop petit. (fp>s) kx,ky=3,3 nx,ny=20,20 m=610 fp=661.198585 s=575.071502 warning C:\Users...\AppData\Local\Continuum\Anaconda3\lib\site -Paquets \scipy\interpolate_fitpack_impl.py :975 : RuntimeWarning : L'espace de stockage requis dépasse l'espace de stockage disponible. disponible. Causes probables : nxest ou nyest trop petit ou s est trop (fp>s) kx,ky=3,3 nx,ny=20,20 m=610 fp=1013.605606 s=575.071502 warnings.warn(RuntimeWarning(_iermess2[ierm][0] + _mess))

Et au lieu d'obtenir quelque chose de similaire à mes données : sample data

Je reçois ceci : spline output

J'avoue que je ne sais pas ce que signifient les messages d'avertissement et que je n'ai rien trouvé sur l'internet.

0voto

j08lue Points 311

Il semble que vos données d'entrée contiennent trop peu de points de données ? Un autre problème pourrait être que votre x y y ont des ordres de grandeur très différents. Je ne sais pas si c'est un problème pour les bisplrep mais d'autres algorithmes d'interpolation n'aiment pas cela.

J'ai eu plus de succès avec scipy.interpolate.Rbf qui donne également un résultat très lisse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X