1 回答

TA貢獻1845條經驗 獲得超8個贊
我認為問題在于您需要確保您在維度數量以及這些維度的“域”方面保持一致。插入到未采樣的地方不會得到好的結果。我認為您遇到的錯誤與嘗試在這些地方進行計算有關。
以下是如何使 scipy.interpolate.griddata 文檔中的示例適用于 7 維示例。我正在使用一個更簡單的函數,它只是對points數據中的“特征”求和:
import numpy as np
def func(data):
return np.sum(data, axis=1)
grid = np.mgrid[0:1:5j, 0:1:5j, 0:1:5j, 0:1:5j, 0:1:5j, 0:1:5j, 0:1:5j]
points = np.random.rand(100, 7)
values = func(points)
請注意,網格覆蓋了坐標的整個范圍points。也就是說,由于每一列的points值都在 0 到 1 的范圍內,我應該確保在這些相同的坐標上創建一個網格。
from scipy.interpolate import griddata
grid_z = griddata(points, values, tuple(grid), method='linear')
現在我有這個:
>>> grid_z[2, 2, 2, 2, 2, :, :]
array([[ nan, nan, nan, nan, nan],
[ nan, 3. , 3.25, 3.5 , nan],
[ nan, 3.25, 3.5 , 3.75, nan],
[ nan, 3.5 , 3.75, 4. , nan],
[ nan, nan, nan, nan, nan]])
請注意,有很多 NaN。如果你使用nearestas 方法,你總會得到一個解決方案,但當然linear插值需要兩個東西來插值,所以超立方體的“邊緣”是無效的(并且 7-D 空間有很多邊緣!) .
添加回答
舉報