gpt4 book ai didi

python - 如何使 scipy.interpolate 给出超出输入范围的推断结果?

转载 作者:IT老高 更新时间:2023-10-28 21:33:46 27 4
gpt4 key购买 nike

我正在尝试移植一个使用手动插值器(由数学家学院开发)的程序,以使用 scipy 提供的插值器。我想使用或包装 scipy 插值器,使其具有尽可能接近旧插值器的行为。

两个函数之间的一个关键区别在于,在我们的原始插值器中 - 如果输入值高于或低于输入范围,我们的原始插值器将推断结果。如果您使用 scipy 插值器尝试此操作,则会引发 ValueError。以这个程序为例:

import numpy as np
from scipy import interpolate

x = np.arange(0,10)
y = np.exp(-x/3.0)
f = interpolate.interp1d(x, y)

print f(9)
print f(11) # Causes ValueError, because it's greater than max(x)

是否有一种明智的方法可以使最后一行不会崩溃,而是简单地进行线性外推,将第一个和最后两个点定义的梯度延续到无穷大。

请注意,在真正的软件中,我实际上并没有使用 exp 函数 - 这只是为了说明!

最佳答案

从 SciPy 0.17.0 版开始,scipy.interpolate.interp1d 有了一个新选项。允许外推。只需在调用中设置 fill_value='extrapolate'。以这种方式修改您的代码:

import numpy as np
from scipy import interpolate

x = np.arange(0,10)
y = np.exp(-x/3.0)
f = interpolate.interp1d(x, y, fill_value='extrapolate')

print f(9)
print f(11)

输出是:

0.0497870683679
0.010394302658

关于python - 如何使 scipy.interpolate 给出超出输入范围的推断结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2745329/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com