我在 Python 中插入一些数据以在常规网格上重新网格化,以便我可以部分集成它。数据表示一个高维参数空间的函数(目前为 3,将扩展到至少 5 个)并返回可观察的多值函数(目前为 2,将扩展到 3,然后可能扩展到数十个)。
scipy.interpolate.LinearNDInterpolator
由于缺少任何其他明显的选项,我正在执行插值(并且因为我理解griddata
只是调用它)。在一个较小的数据集(15,000 行列数据)上它可以正常工作。在较大的集合 (60,000+) 上,该命令似乎无限期地运行。top
表示 iPython 正在使用 100% CPU 并且终端完全没有响应,包括对C-c
. 到目前为止,我已经离开了几个小时无济于事,最终我想通过几百万个条目。
我怀疑这个问题与这张票有关,但据说是在我昨天升级到的 SciPy 0.10.0 中修补的。
我的问题基本上是如何在大型数据集上执行多维插值?根据我的尝试,解决方案可能来自几个可能的地方,但我没有找到它们的运气。(由于几个 scipy 的子域似乎已关闭,我的搜索没有帮助......)
- 怎么了
LinearNDInterpolator
?或者,至少,我怎样才能找出问题所在并尝试规避上吊? - 有没有办法重新制定插值,这样
LinearNDInterpolator
就可以了?也许通过谨慎地将数据分块以将其重新划分为部分? - 还有其他更适合该问题的高维插值器吗?(我注意到大多数 SciPy 的替代方案都仅限于 <2D 参数空间。)
- 还有其他方法可以将多维数据放到常规用户定义的网格中吗?这就是我试图通过插值来做的一切......