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 空间有很多边缘!) .
添加回答
举报