En este artículo, aprenderemos Interpolación usando el módulo SciPy en Python. Primero, discutiremos la interpolación y sus tipos con implementación.
Interpolación y sus tipos
La interpolación es una técnica de construcción de puntos de datos entre puntos de datos dados. El scipy.interpolate es un módulo en Python SciPy que consta de clases, funciones spline y clases de interpolación univariadas y multivariadas. La interpolación se realiza de muchas maneras, algunas de ellas son:
- Interpolación 1-D
- interpolación spline
- Interpolación spline univariante
- Interpolación RBF
Analicemos todos los métodos uno por uno y visualicemos los resultados.
Interpolación 1-D
Para crear una función basada en puntos de datos fijos, se usa scipy.interpolate.interp1d . Toma los puntos de datos x e y y devuelve una función que se puede llamar con la nueva x y devuelve el punto y correspondiente.
Sintaxis: scipy.interpolate.interp1d(x , y , tipo , eje , copia , error de límites , valor de relleno , asumir_ordenado)
Python
# Import the required Python libraries import matplotlib.pyplot as plt from scipy import interpolate import numpy as np # Initialize input values x and y x = np.arange(0, 10) y = x**2 # Interpolation temp = interpolate.interp1d(x, y) xnew = np.arange(0, 9, 0.2) ynew = temp(xnew) plt.title("1-D Interpolation") plt.plot(x, y, '*', xnew, ynew, '-', color="green") plt.show()
Producción:
interpolación spline
En la interpolación spline, se calcula una representación spline de la curva y luego se calcula la spline en los puntos deseados. La función splrep se usa para encontrar la representación spline de una curva en un plano bidimensional.
- Para encontrar la representación B-spline de una curva 1-D, se usa scipy.interpolate.splrep .
Sintaxis: scipy.interpolate.splrep(x, y, w, xb, xe, k, task, s, t, full_output, per, quiet)
- Para calcular un B-spline o sus derivados, se usa scipy.interpolate.splev .
Sintaxis: scipy.interpolate.splev(x, tck, der, ext)
Python
# Import the required Python libraries import numpy as np import matplotlib.pyplot as plt from scipy import interpolate # Initialize the input values x = np.arange(0, 10) y = np.cos(x**3) # Interpolation # To find the spline representation of a # curve in a 2-D plane using the function # splrep temp = interpolate.splrep(x, y, s=0) xnew = np.arange(0, np.pi**2, np.pi/100) ynew = interpolate.splev(xnew, temp, der=0) plt.figure() plt.plot(x, y, '*', xnew, ynew, xnew, np.cos(xnew), x, y, 'b', color="green") plt.legend(['Linear', 'Cubic Spline', 'True']) plt.axis([-0.1, 6.5, -1.1, 1.1]) plt.title('Cubic-spline Interpolation in Python') plt.show()
Producción:
Spline univariante
Es una spline de suavizado 1-D que se ajusta a un grupo dado de puntos de datos. El scipy.interpolate.UnivariateSpline se usa para ajustar una spline y = spl(x) de grado k a los datos x, y proporcionados. s especifica el número de nudos especificando una condición de suavizado. El scipy.interpolate.UnivariateSpline. set_smoothing_factor: Cálculo de spline con el factor de suavizado s dado y con los nudos encontrados en la última llamada.
Sintaxis: scipy.interpolate.UnivariateSpline(x, y, w, bbox, k, s, ext)
Python
# Import the required libraries import matplotlib.pyplot as plt from scipy.interpolate import UnivariateSpline x = np.linspace(-3, 3, 50) y = np.exp(-x**2) + 0.1 * np.random.randn(50) plt.title("Univariate Spline") plt.plot(x, y, 'g.', ms=8) # Using the default values for the # smoothing parameter spl = UnivariateSpline(x, y) xs = np.linspace(-3, 3, 1000) plt.plot(xs, spl(xs), 'green', lw=3) # Manually change the amount of smoothing spl.set_smoothing_factor(0.5) plt.plot(xs, spl(xs), color='black', lw=3) plt.show()
Producción:
Función de base radial para interpolación
El scipy.interpolate.Rbf se usa para interpolar datos dispersos en n dimensiones. La función de base radial se define como correspondiente a un punto de datos de referencia fijo. El scipy.interpolate.Rbf es una clase para la interpolación de función de base radial de funciones de datos dispersos ND a un dominio MD.
Sintaxis: scipy.interpolate.Rbf(*args)
Python
# Import the required libraries import numpy as np from scipy.interpolate import Rbf import matplotlib.pyplot as plt # setup the data values x = np.linspace(0, 10, 9) y = np.cos(x/2) xi = np.linspace(0, 10, 110) # Interpolation using RBF rbf = Rbf(x, y) fi = rbf(xi) plt.subplot(2, 1, 2) plt.plot(x, y, '*', color="green") plt.plot(xi, fi, 'green') plt.plot(xi, np.sin(xi), 'black') plt.title('Radial basis function Interpolation') plt.show()
Producción:
Publicación traducida automáticamente
Artículo escrito por shubhikagarg1999 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA