[Numpy-discussion] Improving numpy.interp

LB berthe.loic@gmail....
Thu Nov 8 14:15:03 CST 2007


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



More information about the Numpy-discussion mailing list