是否有 scipy/numpy 方法来获取最近插值的索引?

Is there a scipy/numpy method to get the indices for nearest interpolation?

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

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

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

k-D trees 通常用于分区多维数据以执行快速 nearest-neighbour 搜索。

例如,scipy.interpolate.NearestNDInterpolator is essentially just a wrapper around scipy.spatial.cKDTree (see the source code here). cKDTree.query 将 return nearest-neighbour 索引以及给定输入坐标集的相应距离。