【发布时间】:2020-07-01 17:07:22
【问题描述】:
我有一个 3D 数组,并希望将其插入到更高分辨率的网格中。 3D 阵列定义在具有均匀间距的规则网格上。插值也在均匀间距的规则网格上。步长为2^(-n), n=0,1,2,3 ...。插值应该是线性的或更高阶的 Bspline。例如,3D 数组 a 的大小为 (3,3,5),插值网格的步长为 (0.5, 0.5, 0.5)(n=1)。那么插值网格定义为
x=np.linspace(0,2,num=5) # 3/0.5-1 = 5
y=np.linspace(0,2,num=5) # 3/0.5-1 = 5
z=np.linspace(0,4,num=9) # 5/0.5-1 = 9
xx, yy, zz = np.meshgrid(x, y, z, sparse=True)
那么输出数组的大小应该是 (5,5,9)。 scipy 或 numpy 中的哪个插值函数可以以最有效的方式完成这项工作?
【问题讨论】:
-
你看过来自 scipy 的 many interpolation options 吗?
-
是的,但是我找不到规则的偶数网格到 3D 数组的规则偶数网格。我见过有 RegularGridInterpolator 和 map_coordinates,但它们旨在解决更普遍的问题。
-
scipy.interpolate.interpn 在任意维度的规则网格上插值
-
@David 我看过 interpn 函数,但找不到一个很好的例子。能否举个例子说明如何使用?
标签: python numpy scipy interpolation