Scipy的griddata似乎能够处理这种大小的数据集而不会出现问题:
将numpy导入为np导入scipy.interpolate#旧网格x,y = np.mgrid [0:1:201j,0:1:513j]z = np.sin(x * 20)*(1j + np.cos(y * 3))** 2#一些数据#个新网格x2,y2 = np.mgrid [0.1:0.9:201j,0.1:0.9:513j]#插值到新网格上z2 = scipy.interpolate.griddata((x.ravel(),y.ravel()),z.ravel(),(x2,y2),method ='cubic')
在旧的AMD Athlon上,griddata步骤大约需要5秒钟。
如果您的数据在网格上(即,与值z [i,j]对应的坐标为(x [i],y
[j])),则可以使用scipy.interpolate.RectBivariateSpline来提高速度
z3 =(scipy.interpolate.RectBivariateSpline(x [:,0],y [0 ,:],z.real)(x2 [:,0],y2 [0 ,:]) + 1j * scipy.interpolate.RectBivariateSpline(x [:,0],y [0 ,:],z.imag)(x2 [:,0],y2 [0 ,:]))
这需要0.05秒。它的速度要快得多,因为即使您的网格间距不规则,只要网格是矩形的,也可以使用更有效的算法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)