Bonjour,
Je souhaite réaliser une interpolation 3D avec SciPy. J'ai à ma disposition 4 listes de même taille. À partir de 3 points contenus dans les 3 premières listes, je souhaite pouvoir effectuer une interpolation linéaire afin d'obtenir la valeur du point correspondant dans la 4e liste.
À titre d'exemple, j'ai :
X = [x1, x2, ..., xn] # Liste 1
Y = [y1, y2, ..., yn] # Liste 2
Z = [z1, z2, ..., zn] # Liste 3
F = [f1, f2, ..., fn] #Liste 4
Ainsi, en choisissant, une valeur x comprise dans X, une valeur y comprise dans Y et une valeur z comprise dans Z, je voudrais interpoler linéairement de manière à trouver la valeur f correspondante.
J'ai précédemment fait le même exercice en 2D et c'est d'une simplicité folle en utilisant: LinearNDInterpolator(list(zip(X, Y)), F)
J'ai donc essayé de faire la même chose en 3D tel que:
grid = np.array([X, Y, Z]) # Pour créer une grille tridimensionnelle avec les trois premières listes
test = np.array([0, 10000, 0.30]) # Les trois points à l'intérieur des limites de la grille que je veux interpoler
interp = LinearNDInterpolator(grid.T, F)
result = interp(test)
La valeur retournée est un 'NaN'... J'ai également essayé avec 'interpn', mais dans ce cas, j'ai des problèmes de dimensions que je ne comprends pas très bien.
Le problème ne semble pas très complexe, mais comme j'ai très peu d'expérience en interpolation multi-dimensionnelle, j'aimerais avoir un avis extérieur sur la manière de procéder.
En vous remerciant par avance.
Partager