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.

questionAnswers(2)

yourAnswerToTheQuestion