我在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上提交一張票,如果可能的話,將數據集上傳到某個地方 - 如果發現不瞭解的話,這是正確的投訴地點。 –