Интерполяция от большей регулярной сетки к меньшей в питоне - PullRequest
0 голосов
/ 29 марта 2019

У меня есть таблица значений размером 6000 x 9600. которая должна быть интерполирована на сетку 300 x 480. Использование griddata приводит к 100% потреблению памяти и перезапуску программы. Я знаю, что в Matlab эту проблему можно решить с помощью функции interp2. После небольшого поиска в Google я обнаружил, что функция scipy.interpolate.RectBivariateSpline почти эквивалентна interp2. Но с его использованием, результат был таким же, как с griddata.

Если есть другие способы решения этой проблемы, я буду рад их видеть. Код приведен ниже.

#regular grid 300 * 480
L,B = np.meshgrid(np.linspace(Lmin, Lmax, 480), np.linspace(Bmin, Bmax, 300))

#regular grid 6000 * 9600
L_dem, B_dem = np.meshgrid(np.linspace(L_dem_min, L_dem_max, 9600), np.linspace(B_dem_min, B_dem_max, 6000))
#array of values ​​of size 6000 * 9600
H = pd.read_csv("....", delim_whitespace=True)).values

#preparing data for using the griddata
L_dem = np.reshape(L_dem, (6000*9600,))
B_dem = np.reshape(B_dem, (6000*9600,))
H = np.reshape(H, (6000*9600,))

#interpolation
H_interp = griddata((B_dem, L_dem), H, (B,L))
...