sirve regulares regular que python3 para expresiones expresion ejemplos cualquier caracter python numpy interpolation spatial-interpolation kriging

que - python string expresiones regulares



InterpolaciĆ³n sobre rejilla regular en Python (1)

Lo que es una solución sensata depende en gran medida de las preguntas que intente responder con los píxeles interpolados: caveat emptor: ¡la extrapolación de los datos faltantes puede llevar a respuestas muy engañosas!

Interpolación de la función de base radial / suavizado del núcleo

En términos de soluciones prácticas disponibles en Python, una forma de rellenar esos píxeles sería utilizar la implementación de la interpolación de la función de base radial de Scipy (ver here ) que está destinada a la suavización / interpolación de datos dispersos.

Dada su matriz M y las matrices de coordenadas 1D subyacentes r y c (de modo que M.shape == (r.size, c.size) ), donde las entradas faltantes de M se configuran en nan , esto parece funcionar bastante bien con un lineal Kernel RBF de la siguiente manera:

import numpy as np import scipy.interpolate as interpolate with open(''measurement.txt'') as fh: M = np.vstack(map(float, r.split('' '')) for r in fh.read().splitlines()) r = np.linspace(0, 1, M.shape[0]) c = np.linspace(0, 1, M.shape[1]) rr, cc = np.meshgrid(r, c) vals = ~np.isnan(M) f = interpolate.Rbf(rr[vals], cc[vals], M[vals], function=''linear'') interpolated = f(rr, cc)

Esto produce la siguiente interpolación de los datos a los que se ha vinculado anteriormente, lo que, si bien es razonable, destaca lo desfavorable que es la proporción de muestras faltantes con respecto a datos reales:

Regresión del proceso gaussiano / Kriging

La interpolación de Kriging está disponible a través de la implementación de Regresión del proceso gaussiano (que a su vez se basa en la caja de herramientas DACE Kriging para Matlab) en la biblioteca scikit-learn. Esto podría ser invocado de la siguiente manera:

from sklearn.gaussian_process import GaussianProcess gp = GaussianProcess(theta0=0.1, thetaL=.001, thetaU=1., nugget=0.01) gp.fit(X=np.column_stack([rr[vals],cc[vals]]), y=M[vals]) rr_cc_as_cols = np.column_stack([rr.flatten(), cc.flatten()]) interpolated = gp.predict(rr_cc_as_cols).reshape(M.shape)

Esto produce una interpolación muy similar a la del ejemplo de la función de base radial anterior. En ambos casos, hay muchos parámetros para explorar: la elección de estos depende en gran medida de las suposiciones que puede hacer acerca de los datos. (Una ventaja del kernel lineal utilizado en el ejemplo de RBF anterior es que no tiene parámetros libres)

Pintando

Como último aparte, una solución totalmente motivada por la vista sería utilizar la funcionalidad de inpainting de OpenCV, aunque esto supone matrices de 8 bits (0 - 255) y no tiene una interpretación matemática directa.

He estado luchando para integrar los datos de píxeles "vacíos" en mi matriz 2D. Básicamente, entiendo (pero no profundamente) las técnicas de interpolación como la ponderación de distancia inversa, Kriging, Bicubic, etc. No sé exactamente el punto de inicio (ya sea en la declaración del problema o en el caso Python).

La definición del problema: tengo una matriz MxN (cuadrícula regular) en la que cada píxel representa cierto valor de medición (la figura a continuación y los datos utilizados en esta figura están here ). Quería interpolar los datos para el "espacio de signo de interrogación" (espacio en blanco que también consta de píxeles del mismo tamaño pero vacíos) usando los datos existentes que tengo como píxeles azules.

Mi pregunta:

1) ¿Cómo puedo interpolar estos datos. ¿Alguien podría darme un ejemplo simple (por ejemplo, matriz 3x3) para entender eso claramente?

2) ¿Alguien podría guiarme sobre cómo realizar los pasos hacia la solución en el entorno Python?

3) ¿Cómo puedo comparar las técnicas de interpolación en el sentido de la precisión utilizando Python?

4) ¿Crees que es una buena idea usar una interpolación diferente dependiendo de la densidad de los datos?

Apreciaré sus respuestas y sugerencias.