使用numpy.interp
我能够计算一维分段线性插值到具有离散数据点给定值的函数。
它是一个类似的函数来返回对数插值吗?
答案 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文档。
它包含更复杂的插值,如'立方'插值,它可以为您提供非常平滑的近似值,但它不是对数,也不会给出方程式。
如果你想要一个方程你正在寻找的是一种回归技术而不是插值,但我不认为你是。