Extrapolar com LinearNDInterpolator
Eu tenho um dataset 3D que eu quero interpolar e extrapolar linearmente. A interpolação pode ser feita facilmente comscipy.interpolate.LinearNDInterpolator
. O módulo só pode preencher uma constante / nan para valores fora do intervalo de parâmetros, mas não vejo por que não ofereceria uma opção para ativar a extrapolação.
Olhando para o código, vejo que o módulo está escrito em cython. Sem experiência em cython, é difícil brincar com o código para implementar a extrapolação. Eu posso escrevê-lo em código Python puro, mas talvez alguém aqui tenha uma ideia melhor? Meu caso particular envolve uma grade xy constante, mas os valores z continuam mudando muito (-100.000) e, portanto, a interpolação deve ser rápida, pois a interpolação será executada para cada vez que os valores-z forem alterados.
Para dar um exemplo básico, como solicitado, digamos que eu tenho uma grade como
xyPairs = [[-1.0, 0.0], [-1.0, 4.0],
[-0.5, 0.0], [-0.5, 4.0],
[-0.3, 0.0], [-0.3, 4.0],
[+0.0, 0.0], [+0.0, 4.0],
[+0.2, 0.0], [+0.2, 4.0]]
e digamos que eu quero calcular valores emx = -1.5, -0.8, +0.5
ey = -0.2, +0.2, +0.5
. Atualmente, estou realizando 1d interpolação / extrapolação ao longo do eixo x para cada valor y e, em seguida, ao longo do eixo y para cada valor x. A extrapolação é feita pela segunda função emryggyr's answer
.