
I often need to make a linear interpolation for a single scalar value but this is not very simple with numpy.interp :
import numpy as n n.__version__
'1.0.5.dev4420'
xp = n.arange(10) yp = 2.5 + xp**2 -x x = 3.2 n.interp(x, xp, yp)
Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: object of too small depth for desired array
So I use the following trick (which is really ugly) :
n.interp([x], xp, yp)[0]
7.7000000000000011
Did I miss an obvious way to do it ?
If not, I'd be tempted to patch interp to let it accept scalar values as first argument as follow :
def interp(x, *args, **kwds):
... if type(x) in (float, int): ... return n.interp([x], *args, **kwds).item() ... else : ... return n.interp(x, *args, **kwds) ...
interp(x, xp, yp)
7.7000000000000011
interp([x,2*x], xp, yp)
array([ 7.7, 38.5])
-- LB
participants (1)
-
LB