python中的对数插值

时间:2015-03-30 12:29:50

标签: python numpy interpolation

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

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

2 个答案:

答案 0 :(得分:15)

在过去,我只是将常规插值包装在日志空间中,即

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))

就个人而言,我更喜欢scipy interpolation functions(如@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

然后你可以把它称为任意值的函数。

答案 1 :(得分:0)

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

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

它包含更复杂的插值,如'立方'插值,它可以为您提供非常平滑的近似值,但它不是对数,也不会给出方程式。

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