我在Python中插入一些数据以便在常规网格上对其进行插值,以便我可以部分地将它集成它。数据表示高维参数空间(目前3,至少扩展到5)的函数并返回可观测值的多值函数(目前是2,扩展到3,然后可能是几十)。scipy.interpolate.LinearNDInterpolator在大型数据集上无限期地挂起
我正在通过scipy.interpolate.LinearNDInterpolator
执行插值,因为缺少其他明显的选项(因为我知道griddata
只是调用它)。在一小部分数据集上(15,000行柱状数据),它可以正常工作。在较大的集合(60,000+)上,该命令似乎无限期地运行。 top
表示iPython正在使用100%的CPU,并且终端完全无响应,包括至C-c
。到目前为止,我已经离开了它几个小时无济于事,最终我想通过数百万条。
我怀疑这个问题与this ticket有关,但据推测这是在我昨天升级的SciPy 0.10.0中修补的。
我的问题基本上是如何在大数据集上执行多维插值?根据我的尝试,有一些解决方案可能来自哪些地方,但我没有找到它们。
- 什么用
LinearNDInterpolator
走错了(我的搜索没有的事实,几个SciPy的的子域seem to be down的...帮助)?或者,至少,我如何才能找出问题所在,并设法规避悬挂? - 有没有一种方法来重新插值,以便
LinearNDInterpolator
可以工作?也许通过谨慎地分类数据来重新分配数据? - 是否还有其他高维插补器更适合该问题? (我注意到,大多数SciPy的的替代品仅限于<二维参数空间。)
- 是否有其他方式来获得多维数据到一个普通用户定义的网格?这就是我想通过插值来做的...
首先检查'print scipy。__version__',以便您使用您期望的Scipy版本。要进一步查明问题:尝试在大数据集上执行Delaunay三角测量:'scipy.spatial.Delaunay(points)'。 0.10.0中的代码不应包含潜在的无限循环---但是,插值步骤中的最坏情况性能为N^2(“通常”情况为N),因此您可以从较小的数据集估计多久它可能需要。另外,在Scipy Trac上提交一张票,如果可能的话,将数据集上传到某个地方 - 如果发现不了解的话,这是正确的投诉地点。 –