2016-10-17 2 views
0

Я довольно новичок в python, и я ищу наиболее эффективный питонический способ интерполирования из сетки в другую. Исходная сетка представляет собой структурированную сетку (используются также регулярные или прямоугольные сетки), а интервал неравномерен. Новая сетка представляет собой сетку с регулярными интервалами. Обе решетки 2D. На данный момент это нормально, используя простой метод интерполяции, такой как линейная интерполяция, pheraps в будущем, я мог бы попробовать что-то другое, как бикубический.Какую функцию scipy следует использовать для интерполяции из прямоугольной сетки в регулярную разнесенную прямоугольную сетку в 2D?

Я знаю, что существуют методы для интерполяции из нерегулярной сетки в обычную, однако, учитывая регулярную структуру исходной сетки, должны быть доступны более эффективные методы.

После поиска в scipy docs я нашел 2 метода, которые, по-видимому, соответствуют моему случаю: scipy.interpolate.RegularGridInterpolator и scipy.interpolate.RectBivariateSpline. Я не понимаю разницу между двумя функциями, которую я должен использовать? Является ли разница чисто в методах интерполяции? Кроме того, хотя неравномерный интервал исходной сетки явно упоминается в RegularGridInterpolator, RectBivariateSpline, doc молчит об этом.

Спасибо,

Andrea

ответ

2

RectBivariateSpline

Представьте вашу сетку в каньоне, где высокие значения являются пики и низкие значения являются долины. Двумерный сплайн будет пытаться помещать тонкий лист над этим каньоном для интерполяции. Это будет по-прежнему работать на нерегулярно распределенном входе, пока массив x и y, который вы поставляете, также нерегулярно разнесены, и все еще остается на прямоугольной сетке.

RegularGridInterpolator

же каньон, но теперь мы линейно интерполировать вокруг gridpoints интерполировать. Мы будем предполагать, что входные данные регулярно размещаются, чтобы сохранить некоторые вычисления. Похоже, это не сработает для вас.

Теперь что?

Обе эти карты 2D-1D. Похоже, что у вас есть нерегулярное пространство ввода, но с прямоугольными разнесенными точками выборки и пространство вывода с регулярно расположенными точками выборки. Вы можете просто попробовать LinearNDInterpolator, так как вы находитесь в 2D, это будет не намного дороже.

Если вы пытаетесь интерполировать отображение между двумя двумерными вещами, вам нужно сделать две интерполяции, которые интерполируют (x1, y1) -> x2 и один, который интерполирует (x1, y1) -> y2 ,

Vstacking output of the даст вам массив точек в вашем выходном пространстве.

Я не знаю более эффективного метода в scipy для использования ожидаемой структуры выхода интерполяции, учитывая нерегулярный вход сетки.