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
.