Używam funkcji griddata w scipy do interpolowania 3 i 4 wymiarowych danych. Działa jak mistrz, z tym, że zwraca kilka NaN, ponieważ niektóre z potrzebnych punktów są poza zakresem danych wejściowych. Biorąc pod uwagę, że dane N-d działają tak czy inaczej z interpolacją trybu liniowego, powinno to być proste, aby griddata wykonywała ekstrapolację zamiast tylko zwracać NaN. Czy ktoś to zrobił lub znalazł obejście? W celu wyjaśnienia: Mam nieustrukturyzowane dane, więc nie mogę używać żadnej z funkcji wymagających regularnej siatki. Dzięki! AlexEkstrapolacja 3D w python (w zasadzie, scipy.griddata rozszerzona do ekstrapolacji)
Odpowiedz
Nie całkiem pewien, że to będzie pracować dla Ciebie i nie jest jeszcze dostępne, ale w wersji rozwojowej numpy istnieje „pad” funkcja array ...
https://github.com/numpy/numpy/blob/master/numpy/lib/arraypad.py
Jednym opcją jest "linear_ramp", która ekstrapoluje (pady) na zewnątrz zaczynając od wartości krawędzi i liniowo zwiększając/zmniejszając do określonej wartości końcowej.
Jest to czysta funkcja python więc można po prostu skopiować go na swojej drodze i importu (nietestowanego przeze mnie choć)
wygląda na zupełnie niezwiązanego ze mną. tutaj są dokumenty, nic nie ma związku z interpolacją/ekstrapolacją https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.pad.html – denfromufa
Czy to pomoże wypełnić punkty poza zakres z pewną stałą wartość? W takim przypadku możesz podać wartość fill_value – Dhara
Czy na pewno chcesz ekstrapolować? czasem wyjście na NaN i świadomość, że wychodzisz poza zasięg, to o wiele lepszy wybór. Użyłem splajnów Univariate z scipy, to bezgłośnie ekstrapoluje i wyniki mogą być całkiem "wyłączone" – Dhara
Moja sytuacja: mierzę niektóre wartości w kilku punktach i muszę następnie obliczyć wartości w kilku innych punktach poprzez inter/ekstrapolację . Stała wartość lub NaN naprawdę nie pomagają. Wiem, jak trywialne mogą być splajny, więc pomyślałem, że liniowy byłby bezpiecznym zakładem. Chciałbym jednak coś, co działa na danych N-d. – user1483697