我基本上有一组大的(GB)数据集,其中包含我需要进行最近插值的点。本质上,它是一个时间函数的标量/矢量场。我知道scipy.interpolate
及其所有优点,而且我一直在使用它。然而,我意识到数据的空间结构在时间上是恒定的(欧拉),所以一旦我弄清楚哪个指数对应于这个或那个插值点,比如第一个时间步,我就可以获得那些指数,并且相同的索引应该能够为其他时间创建相同形状的插值数据。从本质上讲,它可以省去一次又一次重新插值数据的步骤。
我愿意自己这样做,但我想检查是否已经有一种方法可以做到这一点,可能不是scipy而是其他地方。 scipy.interpolate
没有任何现成的东西,看起来它可以做到这一点。如果没有答案,我会发布我的解决方案。
最后要注意的是,网格是欧拉但不是常规的并且有可能重复,因此需要最近的插值 。我可以(并且已经)对空间点进行词法排序,这有助于快速查找。
答案 0 :(得分:2)
k-D trees通常用于对多维数据进行分区,以便执行快速最近邻搜索。
例如,scipy.interpolate.NearestNDInterpolator
基本上只是scipy.spatial.cKDTree
的包装(参见源代码here)。 cKDTree.query
将返回最近邻居索引以及给定输入坐标集的相应距离。