【问题标题】:Is there a scipy/numpy method to get the indices for nearest interpolation?是否有 scipy/numpy 方法来获取最近插值的索引?
【发布时间】:2015-12-31 06:16:28
【问题描述】:

我基本上有一组大型 (GB) 数据集,其中包含我需要对其进行最近插值的点。本质上,它是一个标量/矢量场,是时间的函数。我知道scipy.interpolate 和它的所有优点,我一直在使用它。但是,我意识到数据的空间结构在时间上是恒定的(欧拉),所以一旦我确定了哪些索引对应于这个或那个点进行插值,比如第一个时间步,我就可以获得这些索引,并且相同的索引应该能够为其他时间创建相同形状的插值数据。本质上,它省去了一次又一次地重新插值数据的步骤。

我愿意自己做,但我想检查是否已经存在一种方法可以做到这一点,可能不在 scipy 中而是在其他地方。 scipy.interpolate 没有任何现成的东西看起来可以做到这一点。如果没有答案,我会发布我的解决方案。

最后一点,网格是欧拉的,但不是规则的,并且可能有重复,所以需要最近的插值。我可以(并且已经)对空间点进行了词汇排序,这将有助于快速查找。

【问题讨论】:

  • scipy.interpolate.NearestNDInterpolator 建立在scipy.spatial.cKDTree 之上,可以返回最近邻索引和距离
  • 太棒了!为什么不让它成为答案并获得积分?

标签: python numpy scipy interpolation nearest-neighbor


【解决方案1】:

k-D trees 通常用于对多维数据进行分区,以执行快速最近邻搜索。

例如,scipy.interpolate.NearestNDInterpolator 本质上只是scipy.spatial.cKDTree 的一个包装器(参见源代码here)。 cKDTree.query 将返回最近邻索引以及给定输入坐标集的相应距离。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 2018-07-01
    • 2021-08-16
    • 2017-03-15
    • 2011-08-14
    • 1970-01-01
    相关资源
    最近更新 更多