EDITAR: Paul ha resuelto este a continuación. ¡Gracias!¿Interpolación de Scipy cómo redimensionar/remuestrear la matriz de 3x3 a 5x5?
Estoy tratando de remuestrear (exclusivo) una matriz de 3x3 a 5x5, completando los puntos intermedios con interpolate.interp2d o interpolate.RectBivariateSpline (o lo que sea que funcione).
Si hay una función simple y existente para hacer esto, me gustaría usarla, pero aún no la he encontrado. Por ejemplo, una función que funcionaría como:
# upscale 2x2 to 4x4
matrixSmall = ([[-1,8],[3,5]])
matrixBig = matrixSmall.resample(4,4,cubic)
Por lo tanto, si comienzo con una matriz 3x3/matriz:
0,-2,0
-2,11,-2
0,-2,0
Quiero calcular una nueva matriz de 5x5 ("I", que significa interpolé valor):
0, I[1,0], -2, I[3,0], 0
I[0,1], I[1,1], I[2,1], I[3,1], I[4,1]
-2, I[1,2], 11, I[3,2], -2
I[0,3], I[1,3], I[2,3], I[3,3], I[4,3]
0, I[1,4], -2, I[3,4], 0
he estado buscando y leyendo y tratando diversos código de prueba diferente, pero bastante no he descubierto la sintaxis correcta para lo que estoy tratando de hacer. Tampoco estoy seguro de si necesito usar meshgrid, mgrid o linspace en ciertas líneas.
EDIT: Se ha corregido y trabajando Gracias a Paul
import numpy, scipy
from scipy import interpolate
kernelIn = numpy.array([[0,-2,0],
[-2,11,-2],
[0,-2,0]])
inKSize = len(kernelIn)
outKSize = 5
kernelOut = numpy.zeros((outKSize,outKSize),numpy.uint8)
x = numpy.array([0,1,2])
y = numpy.array([0,1,2])
z = kernelIn
xx = numpy.linspace(x.min(),x.max(),outKSize)
yy = numpy.linspace(y.min(),y.max(),outKSize)
newKernel = interpolate.RectBivariateSpline(x,y,z, kx=2,ky=2)
kernelOut = newKernel(xx,yy)
print kernelOut
¡Muchas gracias por la solución rápida! Eso es exactamente lo que estaba buscando. Había intentado linspace antes, pero con el formato incorrecto y me perdí completamente kx, ky. – moski