从较大的常规网格到python中较小的网格的插值

时间:2019-03-29 09:01:40

标签: python scipy grid interpolation

我有一个大小为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))

0 个答案:

没有答案