Fonction SciPy scipy.interpolate.interp1d

Suraj Joshi 30 janvier 2023
  1. Syntaxe de scipy.interpolate.interp1d() pour interpoler les points de données :
  2. Exemple de code : Interpolation linéaire 1d entre points de données avec scipy.interpolate.interp1d()
  3. Exemple de code : Définir le paramètre kind dans la méthode scipy.interpolate.interp1d()
Fonction SciPy scipy.interpolate.interp1d

La classe Python Scipy scipy.interpolate.interp1d() est utilisée pour interpoler une fonction unidimensionnelle. Une fonction unidimensionnelle prend une seule valeur d’entrée comme paramètre et renvoie une seule valeur de sortie analysée.

Normalement, nous avons une série de points de données dans des emplacements discrets. Maintenant, nous essayons d’approximer la fonction qui peut trouver des valeurs y pour n’importe quelles valeurs x données entre ces points donnés.

Syntaxe de scipy.interpolate.interp1d() pour interpoler les points de données :

scipy.interpolate.interp1d(x, y, kind)

Paramètres

x Comme un tableau. Il s’agit de l’ensemble de valeurs d’entrée fourni à la fonction.
y Comme un tableau. Il s’agit de la valeur d’entrée définie en fonction de x.
kind C’est un paramètre facultatif. Il spécifie le type d’interpolation. Par défaut, il est réglé sur linear.

Retourner

Il renvoie une fonction.

Exemple de code : Interpolation linéaire 1d entre points de données avec scipy.interpolate.interp1d()

import numpy as np
import matplotlib.pyplot as plt
import scipy
from scipy import interpolate

x_value = np.array([0, 1, 2, 4])
y_value = np.array([2, 3, 12, 147])

function = scipy.interpolate.interp1d(x_value, y_value)
x_new = np.linspace(0, 4, 10)

plt.scatter(x_value, y_value, color="blue")
plt.plot(x_new, function(x_new), color="black")
plt.xlabel("X-Values")
plt.ylabel("Y-Values")
plt.title("1d Interpolation using scipy interp1d method")
plt.show()

Production :

Interpolation 1d utilisant la méthode scipy interp1d

Ici, nous essayons d’interpoler ou de créer une fonction approximant la relation entre x_value et y_value. Dans le code ci-dessus, les valeurs x_value et y_value sont prises au hasard. Ensuite, les valeurs sont passées comme argument dans la fonction interp1d, qui détermine la fonction d’interpolation function. Maintenant, nous pouvons trouver n’importe quelle y_value pour n’importe quelle x_value dans l’intervalle de x_new.

Enfin, pour visualiser à quoi ressemble la fonction d’interpolation, nous prenons 10 points entre 0 et 4 et traçons la courbe linéaire de la fonction représentée par la courbe noire sur la figure.

Comme nous n’avons pas défini le type de courbe que nous voulons interpoler, par défaut, la méthode interp1d nous montre une ligne droite linéaire entre les points.

Exemple de code : Définir le paramètre kind dans la méthode scipy.interpolate.interp1d()

import numpy as np
import matplotlib.pyplot as plt
import scipy
from scipy import interpolate

x_value = np.array([0, 1, 2, 4])
y_value = np.array([2, 3, 12, 147])

f_linear = scipy.interpolate.interp1d(x_value, y_value)
f_quad = scipy.interpolate.interp1d(x_value, y_value, kind="quadratic")
x_new = np.linspace(0, 4, 4)

plt.scatter(x_value, y_value, color="blue")
plt.plot(x_new, f_linear(x_new), color="black")
plt.plot(x_new, f_quad(x_new), color="green")
plt.xlabel("X-Values")
plt.ylabel("Y-Values")
plt.title("1d Interpolation using scipy interp1d method")
plt.legend(["linear", "quadratic", "data"], loc="best")
plt.show()

Production :

Définir le paramètre de type dans l’interpolation 1d à l’aide de la méthode scipy interp1d

Le graphique ci-dessus montre des fonctions d’interpolation approximées à l’aide de techniques linear et quadratic. La ligne noire du graphique représente la ligne interpolée en utilisant la méthode linéaire, et la ligne verte du graphique représente la ligne interpolée en utilisant la méthode quadratic.

Ainsi, pour résumer, la classe interp1d est utilisée pour calculer une fonction à l’aide des points de données fournis et peut être calculée à tout moment, n’importe où spécifié dans le domaine donné en utilisant une interpolation linéaire.

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn