SciPy:稀疏数据的n维插值

时间:2015-02-26 03:20:19

标签: python optimization numpy scipy interpolation

我目前有一组n维数据点,每个数据点都有一个chi2值(n通常在2到4之间)。

我想对我提供的数据点采用某种形式的非线性插值,以便我可以尝试最小化此chi2值。当然,我愿意采用更好的方法来最小化chi2值。

目前,我的代码适用于1D和2D数组

mesh = np.meshgrid(*[i['grid2'] for i in self.cambParams], indexing='ij')
chi2 = griddata(data[:,:-1], data[:,-1], tuple(mesh), method='cubic')

然而,scipy.interpolate.griddata仅支持2D网格上方的线性插值,这意味着插值是无用的,因为最小值将是数据中的已定义点。有没有人知道可能有效的替代插值方法,或者更好的解决问题的方法呢?

干杯

1 个答案:

答案 0 :(得分:2)

从外部来源收到了一份有效的提示,所以发布答案以防将来有人帮助。

SciPy有一个Rbf插值方法(径向基函数),它允许比任意维度的线性插值更好。

使用data行的变量(x1,x2,x3...,xn,v),对原始帖子的跟随代码修改允许插值:

rbfi = Rbf(*data.T)
mesh = np.meshgrid(*[i['grid2'] for i in self.cambParams], indexing='ij')
chi2 = rbfi(*mesh)

文档here is useful,并且有一个简单易懂的示例here,它比上面的代码段更有意义。