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

时间:2015-12-30 21:06:39

标签: python numpy scipy interpolation nearest-neighbor

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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