In passato, ho appena finito l'interpolazione normale di farlo in log-spazio, vale a dire
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))
Personalmente, preferisco di gran lunga il scipy interpolation functions (come @mylesgallagher menzioni), ad esempio:
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
Quindi è possibile chiamarlo come una funzione su un valore arbitrario.
Presumibilmente, intendi numpy.interp? – MJeffryes
sì, era un errore di battitura. – DimKoim
Dalla tua domanda non è chiaro cosa intendi esattamente con "interpolazione logaritmica". Potresti dare qualche esempio di input/output? –