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