python中的对数插值

python中的对数插值,python,numpy,interpolation,Python,Numpy,Interpolation,使用numpy.interp我能够计算离散数据点处具有给定值的函数的一维分段线性插值 返回对数插值也是一个类似的函数吗?如果我理解正确,您有一些离散数据,希望得到一组平滑的值,这些值将出现在您的值之间。我假设你不想要一个近似数据的对数函数方程 不幸的是,numpy并没有线性分段插值之外的任何东西,但如果您考虑使用它,它确实有一个更强大的插值函数。有关更多详细信息,请参阅文档 它包括更复杂的插值,比如“三次”插值,它会给你非常平滑的近似值,但它不会是对数,也不会给你一个方程 如果你想要一个方程,你

使用
numpy.interp
我能够计算离散数据点处具有给定值的函数的一维分段线性插值


返回对数插值也是一个类似的函数吗?

如果我理解正确,您有一些离散数据,希望得到一组平滑的值,这些值将出现在您的值之间。我假设你不想要一个近似数据的对数函数方程

不幸的是,numpy并没有线性分段插值之外的任何东西,但如果您考虑使用它,它确实有一个更强大的插值函数。有关更多详细信息,请参阅文档

它包括更复杂的插值,比如“三次”插值,它会给你非常平滑的近似值,但它不会是对数,也不会给你一个方程


如果你想要一个方程,你要找的是回归技术而不是插值,但我认为你不是。

在过去,我只是在对数空间中包装法线插值,即

def log_interp(zz, xx, yy):
    logz = np.log10(zz)
    logx = np.log10(xx)
    logy = np.log10(yy)
    return np.power(10.0, np.interp(logz, logx, logy))
就个人而言,我更喜欢(正如@mylesgallagher提到的),例如:

import scipy as sp
import scipy.interpolate

def log_interp1d(xx, yy, kind='linear'):
    logx = np.log10(xx)
    logy = np.log10(yy)
    lin_interp = sp.interpolate.interp1d(logx, logy, kind=kind)
    log_interp = lambda zz: np.power(10.0, lin_interp(np.log10(zz)))
    return log_interp

然后您可以将其作为任意值上的函数调用。

您的问题不清楚“对数插值”的确切含义。你能给出一些输入/输出的例子吗?我试过这个方法,但它不能插值,超出了插值的范围。你知道估算新值的方法吗?@LuisGonzález scipy对外推法没有广泛的支持,但请查看以下答案:,注意:外推法,尤其是样条曲线,可能会导致令人惊讶的行为(例如,曲线可能在输入范围外急剧“转向”)。