SciPy scipy.interpolate.interp1d Función

Suraj Joshi 30 enero 2023
  1. Sintaxis de scipy.interpolate.interp1d() para interpolar puntos de datos:
  2. Código de ejemplo: Interpolación lineal 1d entre puntos de datos usando scipy.interpolate.interp1d()
  3. Código de ejemplo: establecer el parámetro kind en el método scipy.interpolate.interp1d()
SciPy scipy.interpolate.interp1d Función

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:

Interpolación 1d usando el método scipy interp1d

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:

Establezca el parámetro de tipo en la interpolación 1d usando el método scipy interp1d

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 avatar Suraj Joshi avatar

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

LinkedIn