Interpolación 3D en Python

Zeeshan Afridi 21 junio 2023
  1. Importancia de la interpolación
  2. Instalar SciPy para interpolación en Python
  3. Utilice el método interpn() de SciPy para la interpolación 3D en Python
  4. Use RegularGridInterpolator para la interpolación 3D en Python
  5. Conclusión
Interpolación 3D en Python

La interpolación es el método de construir nuevos puntos de datos dentro de un rango definido de un conjunto discreto. Interpolación significa encontrar valor entre puntos o curvas.

Desde un punto de vista matemático, la interpolación es obtener el valor de puntos de datos desconocidos específicos ubicados entre otros puntos de datos conocidos.

Importancia de la interpolación

La interpolación es una poderosa herramienta para hacer predicciones, análisis de datos y muchas otras aplicaciones. Predice valores desconocidos para datos relacionados con la geografía, como el nivel de ruido, la lluvia, la elevación, etc.

La interpolación tiene muchos usos. En Machine Learning (ML), a menudo tratamos con datos faltantes en un conjunto de datos, y la interpolación se usa a menudo para sustituir esos valores.

Instalar SciPy para interpolación en Python

Para usar la interpolación en Python, necesitamos usar la biblioteca central de SciPy y, más específicamente, el módulo de interpolación.

SciPy proporciona muchas funciones valiosas para el procesamiento matemático y la optimización del análisis de datos. Proporciona funciones útiles para obtener interpolaciones unidimensionales, bidimensionales y tridimensionales.

Necesitamos saber cómo instalar la biblioteca SciPy en Python para avanzar.

Para instalar SciPy, vaya a su interfaz de línea de comandos y escriba el siguiente comando.

pip install scipy

Una vez que se haya instalado con éxito, podemos importarlo a nuestro programa Python usando la palabra clave importar.

Utilice el método interpn() de SciPy para la interpolación 3D en Python

Podemos realizar la interpolación 3D utilizando el método interpn() de la biblioteca SciPy. Significa que podemos encontrar tres o más dimensiones con la ayuda de este método.

Sintaxis de la función interpn():

scipy.interpolate.interpn(
    points, values, xi, method="linear", bounds_error=True, fill_value=nan
)

Parámetros de la función interpn():

  1. puntos: tupla de ndarray de float, que tiene las formas (m1, ),…,(mn, ).

    A través de estos puntos se define una cuadrícula regular de n dimensiones. Los puntos en cada dimensión (es decir, cada elemento de la tupla de puntos) deben ser estrictamente ascendentes o descendentes.

  2. valores: tipo matriz, forma (m1,…,mn,…).

    Los datos están en la cuadrícula regular en n dimensiones. Los datos complejos pueden ser aceptables.

  3. xi : ndarray de forma (…,ndim).

    Aquí es donde se encuentran las coordenadas para muestrear los datos cuadriculados.

  4. método: str, opcional

    Los métodos de interpolación son lineal, más cercano y splinef2d. splinef2d solo se admite para datos 2D.

  5. bounds_error: booleano, opcional

Si es cierto, cuando se solicitan valores interpolados desde fuera del dominio de los datos de entrada, se genera un `ValueError`. Si es falso, entonces se usa `fill_value`.
  1. fill_value: número, opcional

Si proporcionamos un número, la función puede usar puntos fuera del dominio de interpolación; si es Ninguno, se extrapolan los valores fuera del dominio. La extrapolación no es compatible con el método splinef2d.

El método interpn() devuelve valores_x: ndarray, forma xi.forma[:-1] + valores.forma[ndim:]. El valores.ndarray interpolado es un contenedor multidimensional donde la longitud de la forma de cada dimensión y ndim es el número de dimensiones.

Ahora hemos entendido la función interpn() y sus parámetros. Pongamos un ejemplo práctico de ello.

En este ejemplo, pasamos tres argumentos al método interpn().

Código de ejemplo:

# import libraries
from scipy.interpolate import interpn
import numpy as np

# define a function to get the value


def v_function_3d(x, y, z):
    return 3 * x + 4 * y - z


# the np.linspace() function returns the interval between the given numbers.
x = np.linspace(0, 4, 5)
y = np.linspace(0, 5, 6)
z = np.linspace(0, 6, 7)

# in three dimensions, a point's coordinates are treated collectively as a single object.
points = (x, y, z)

# meshgrid, it changes NumPy arrays into coordinate matrices or grids of values
values = v_function_3d(*np.meshgrid(*points, indexing="ij"))

# coordinates to sample the gridded data are
point = np.array([2.21, 3.12, 1.15])

# evaluate the 3d interpolating function at a point
print(interpn(points, values, point))

Producción :

[17.96]

Use RegularGridInterpolator para la interpolación 3D en Python

La interpolación sobre una cuadrícula regular o rectilínea en cualquier número de dimensiones se realiza utilizando la clase RegularGridInterpolator.

Se requiere una cuadrícula rectilínea o una cuadrícula rectangular con espaciado regular o irregular para definir los datos. Admite interpolaciones lineales, de vecino más cercano y spline.

Podemos elegir un método de interpolación después de configurar el objeto interpolador.

Usamos RegularGridInterpolator cuando interpolamos linealmente los puntos de cuadrícula circundantes para interpolar. Ingrese los datos en espacios regulares.

El siguiente ejemplo explica cómo usar RegularGridInterpolator para la interpolación.

# import libraries
import scipy.interpolate as reg_grid
import numpy as np

# define a function to get value


def v_function_3d(x, y, z):
    return 2 * x + 3 * y - z


# define an interpolating function
RGI = reg_grid.RegularGridInterpolator

# arrays constituting the 3d grid
x = np.linspace(0, 50, 50)
y = np.linspace(0, 50, 50)
z = np.linspace(0, 50, 50)

# in three dimensions, a point is a number (coordinates) that are treated collectively as a single object.
points = (x, y, z)

# meshgrid, it changes NumPy arrays into coordinate matrices or grids of values
vals = v_function_3d(*np.meshgrid(*points, indexing="ij"))

# make the interpolator
rgi = RGI(points, values=vals)
pnt = (2.5, 3.5, 1.5)
print(rgi(pnt))

Producción :

13.999999999999998

Conclusión

Podemos usar la interpolación 3D en Python con la ayuda de la biblioteca scipy y su método interpn() o RegularGridInterpolator. Podemos hacer fácilmente predicciones, análisis de datos y muchas otras aplicaciones.

La interpolación ayuda a los usuarios a determinar qué datos pueden existir fuera de los datos recopilados.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn