SciPy scipy.interpolate.interp1d Función
-
Sintaxis de
scipy.interpolate.interp1d()
para interpolar puntos de datos: -
Código de ejemplo:
Interpolación lineal 1d
entre puntos de datos usandoscipy.interpolate.interp1d()
-
Código de ejemplo: establecer el parámetro
kind
en el métodoscipy.interpolate.interp1d()
La clase Python Scipy scipy.interpolate.interp1d()
se utiliza para interpolar una función unidimensional. Una función unidimensional toma un único valor de entrada como parámetro y devuelve un único valor de salida analizado.
Normalmente, tenemos una serie de puntos de datos en ubicaciones discretas. Ahora, estamos tratando de aproximar la función que puede encontrar valores de y para cualquier valor de x dado entre estos puntos dados.
Sintaxis de scipy.interpolate.interp1d()
para interpolar puntos de datos:
scipy.interpolate.interp1d(x, y, kind)
Parámetros
x |
Tipo array. Es el conjunto de entrada de valores proporcionados a la función. |
y |
Tipo array. Es el valor de entrada definido en base a x. |
kind |
Es un parámetro opcional. Especifica el tipo de interpolación. De forma predeterminada, se establece en linear . |
Regreso
Devuelve una función.
Código de ejemplo: Interpolación lineal 1d
entre puntos de datos usando 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()
Producción:
Aquí, tratamos de interpolar o crear una función que aproxime la relación entre x_value
y y_value
. En el código anterior, x_value
y y_value
se toman aleatoriamente. Luego, los valores se pasan como argumento a la función interp1d
, que determina la función de interpolación. Ahora podemos encontrar cualquier y_value
para cualquier x_value
dado en el rango de x_new
.
Finalmente, para visualizar cómo se ve la función de interpolación, tomamos 10
puntos entre 0
y 4
y trazamos la línea curva de la función representada por la curva negra en la figura.
Como no hemos establecido qué tipo de curva queremos interpolar, por defecto el método interp1d
nos muestra una línea recta lineal entre puntos.
Código de ejemplo: establecer el parámetro kind
en el método 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()
Producción:
El gráfico anterior muestra funciones de interpolación aproximadas utilizando técnicas linear
y quadratic
. La línea negra
en el gráfico representa la línea interpolada usando el método linear
, y la línea verde
en el gráfico representa la línea interpolada usando el método quadratic
.
Por lo tanto, para resumir, la clase interp1d
se usa para calcular una función usando los puntos de datos provistos y se puede calcular en cualquier momento y en cualquier lugar especificado dentro del dominio dado usando interpolación lineal.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn