【问题标题】:SciPy: n-dimensional interpolation of sparse dataSciPy:稀疏数据的 n 维插值
【发布时间】:2015-04-28 07:46:26
【问题描述】:

我目前有一个 n 维数据点的集合,每个数据点都有一个与之关联的 值(n 通常介于 2 到 4 之间)。

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

目前,我有适用于一维和二维数组的代码

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 仅支持二维网格上方的线性插值,这意味着插值是无用的,因为最小值将是数据中的定义点。有谁知道可能有效的替代插值方法,或者解决一般问题的更好方法?

干杯

【问题讨论】:

    标签: python optimization numpy scipy interpolation


    【解决方案1】:

    从有效的外部来源收到提示,因此发布答案以防将来对任何人有所帮助。

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

    采用具有(x1,x2,x3...,xn,v) 值行的变量data,对原始帖子的以下代码修改允许插值:

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

    文档here is useful,还有一个简单易学的例子here,比上面的sn-p代码更有意义。

    【讨论】:

      猜你喜欢
      • 2021-05-15
      • 2011-02-02
      • 2020-10-16
      • 2021-10-30
      • 2014-05-14
      • 2018-01-11
      • 1970-01-01
      • 2012-10-07
      • 2020-12-01
      相关资源
      最近更新 更多