使用numpy.interp
,我能够计算在离散数据点具有给定值的函数的一维分段线性插值。
它是一个类似的函数来返回对数插值吗?
发布于 2015-03-31 01:49:32
在过去,我只是在对数空间中包装了法线插值。
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
然后,您可以将其作为任意值的函数来调用。
发布于 2015-03-30 12:57:07
如果我没理解错的话,你有一些离散的数据,你想要得到一组平滑的值,这些值会出现在你拥有的值之间。我假设你不想要一个近似于数据的对数函数的方程。
不幸的是,numpy没有线性分段插值之外的任何东西,但是如果你研究一下使用SciPy,它确实有一个更强大的插值函数。有关更多详细信息,请参阅SciPy's interpolate文档。
它包括更复杂的插值,比如“立方”插值,它会给你非常平滑的近似,但它不是一个对数,也不会给你一个方程。
如果你想要一个方程,你要找的是回归技术,而不是插值,但我不认为你是。
https://stackoverflow.com/questions/29346292
复制相似问题