我有一个3D数据集,希望能够进行线性插值和外推。可以使用
看代码时,我发现该模块是用cython编写的。由于没有cython经验,很难通过代码来实现外推。我可以用纯python代码编写它,但也许这里还有其他更好的想法?我的特殊情况涉及一个恒定的xy网格,但z值变化很大(-100,000),因此插值必须快速进行,因为每次z值改变时都会运行插值。
为了举例说明,假设我有一个像这样的网格:
scipy.interpolate.LinearNDInterpolator
轻松进行插值。该模块只能在参数范围之外的值上填充常数/NaN,但我不知道为什么它不提供打开外推选项的选项。看代码时,我发现该模块是用cython编写的。由于没有cython经验,很难通过代码来实现外推。我可以用纯python代码编写它,但也许这里还有其他更好的想法?我的特殊情况涉及一个恒定的xy网格,但z值变化很大(-100,000),因此插值必须快速进行,因为每次z值改变时都会运行插值。
为了举例说明,假设我有一个像这样的网格:
xyPairs = [[-1.0, 0.0], [-1.0, 4.0],
[-0.5, 0.0], [-0.5, 4.0],
[-0.3, 0.0], [-0.3, 4.0],
[+0.0, 0.0], [+0.0, 4.0],
[+0.2, 0.0], [+0.2, 4.0]]
假设我想在x = -1.5, -0.8, +0.5
和y = -0.2, +0.2, +0.5
处计算数值。目前,我正在对每个y值沿着x轴执行1d插值/外推,然后对每个x值沿着y轴执行插值/外推。外推由ryggyr's answer
中的第二个函数完成。