1 回答

TA貢獻(xiàn)1845條經(jīng)驗 獲得超8個贊
我認(rèn)為問題在于您需要確保您在維度數(shù)量以及這些維度的“域”方面保持一致。插入到未采樣的地方不會得到好的結(jié)果。我認(rèn)為您遇到的錯誤與嘗試在這些地方進(jìn)行計算有關(guān)。
以下是如何使 scipy.interpolate.griddata 文檔中的示例適用于 7 維示例。我正在使用一個更簡單的函數(shù),它只是對points數(shù)據(jù)中的“特征”求和:
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)
請注意,網(wǎng)格覆蓋了坐標(biāo)的整個范圍points。也就是說,由于每一列的points值都在 0 到 1 的范圍內(nèi),我應(yīng)該確保在這些相同的坐標(biāo)上創(chuàng)建一個網(wǎng)格。
from scipy.interpolate import griddata
grid_z = griddata(points, values, tuple(grid), method='linear')
現(xiàn)在我有這個:
>>> 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 方法,你總會得到一個解決方案,但當(dāng)然linear插值需要兩個東西來插值,所以超立方體的“邊緣”是無效的(并且 7-D 空間有很多邊緣!) .
添加回答
舉報