【问题标题】:How to efficiently interpolate a 3D array on a finer, uniformed-spacing grid?如何在更精细、均匀间距的网格上有效地插入 3D 阵列?
【发布时间】: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


【解决方案1】:

我发现缩放是最有效的功能。看看吧:https://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.zoom.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    • 2019-05-31
    • 1970-01-01
    相关资源
    最近更新 更多