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