Ekstrapoluj za pomocą LinearNDInterpolator

Mam zbiór danych 3D, który chcę interpolować I ekstrapolować liniowo. Interpolację można łatwo wykonać za pomocąscipy.interpolate.LinearNDInterpolator. Moduł może wypełnić stałą / nan tylko dla wartości spoza zakresu parametrów, ale nie widzę powodu, dla którego nie miałaby opcji włączenia ekstrapolacji.

Patrząc na kod, widzę, że moduł jest napisany w cython. Bez doświadczenia w cython trudno jest bawić się kodem do implementacji ekstrapolacji. Mogę to napisać w czystym kodzie Pythona, ale może ktoś inny ma lepszy pomysł? Mój szczególny przypadek dotyczy stałej siatki xy, ale wartości z ciągle się zmieniają (-100 000) i dlatego interpolacja musi być szybka, ponieważ interpolacja będzie prowadzona za każdym razem, gdy wartości z ulegną zmianie.

Aby podać podstawowy przykład, zgodnie z żądaniem, powiedzmy, że mam siatkę

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]]

i powiedzmy, że chcę obliczyć wartości wx = -1.5, -0.8, +0.5 iy = -0.2, +0.2, +0.5. Obecnie wykonuję interpolację / ekstrapolację 1d wzdłuż osi x dla każdej wartości y, a następnie wzdłuż osi y dla każdej wartości x. Ekstrapolacja odbywa się za pomocą drugiej funkcji wryggyr's answer.

questionAnswers(2)

yourAnswerToTheQuestion