您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Python中将大型不规则网格插值到另一个不规则网格

在Python中将大型不规则网格插值到另一个不规则网格

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秒。它的速度要快得多,因为即使您的网格间距不规则,只要网格是矩形的,也可以使用更有效的算法。

python 2022/1/1 18:35:58 有496人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶