Logarithmic interpolation in python

前端 未结 2 1863
小鲜肉
小鲜肉 2021-02-19 11:07

Using numpy.interp I am able to compute the one-dimensional piecewise linear interpolant to a function with given values at discrete data-points.

Is it a si

2条回答
  •  执笔经年
    2021-02-19 11:53

    In the past, I've just wrapped the normal interpolation to do it in log-space, i.e.

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

    Personally, I much prefer the scipy interpolation functions (as @mylesgallagher mentions), for example:

    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
    

    Then you can just call this as a function on an arbitrary value.

提交回复
热议问题