[SciPy-User] scipy interpolate.interp1d spline slowness

Wolfgang Kerzendorf wkerzendorf at gmail.com
Wed Dec 12 18:26:49 EST 2012


Sorry again, i should include that interp came from: interp = interpolate.interp1d(x, y, kind='cubic')
Cheers
   W
On 2012-12-12, at 6:25 PM, Wolfgang Kerzendorf <wkerzendorf at gmail.com> wrote:

> Hi Josef,
> 
> Your'e absolutely right - I just omitted the other timings as they seemed small compared to the interp1d:
> 
> %timeit interp(x_new)
> 100 loops, best of 3: 3.89 ms per loop
> 
> %timeit tck = interpolate.splrep(x, y, s=0)
> 1000 loops, best of 3: 204 us per loop
> 
> It would be great if you look into this.
> 
> Thanks
>   Wolfgang
> On 2012-12-12, at 5:25 PM, josef.pktd at gmail.com wrote:
> 
>> On Wed, Dec 12, 2012 at 5:08 PM, Wolfgang Kerzendorf
>> <wkerzendorf at gmail.com> wrote:
>>> Hello Scipyers,
>>> 
>>> I've just stumbled across a problem with interpolate.interp1d:
>>> -------------
>>> import numpy as np
>>> from scipy import interpolate
>>> x = arange(1000)
>>> y =  y = np.random.random_integers(0, 900, 1000)
>>> 
>>> %timeit interp = interpolate.interp1d(x, y, kind='cubic')
>>> 1 loops, best of 3: 3.63 s per loop
>>> #the call for the interpolation is really quick afterwards (a couple ms)
>>> 
>>> tck = interpolate.splrep(x, y, s=0)
>>> %timeit interpolate.splev(x_new, tck, der=0)
>>> 100 loops, best of 3: 5.51 ms per loop
>> 
>> It looks to me, you are timing two different things here, with
>> interp1d you time the spline creation with splev you time the
>> evaluation.
>> 
>> for "cubic", interp1d uses _fitpack._bspleval  so I wouldn't expect
>> much difference in timing.
>> But I didn't check whether there is a difference in what the wrappers are doing
>> 
>> Josef
>> 
>> 
>> 
>>> 
>>> ------
>>> I do understand that these are different spline interpolations (but that's as far as my knowledge goes). I was just annoyed at the person saying: Ah, you see python is slow - which it is not as shown by the second scipy command.
>>> 
>>> Would it be possible to switch the spline interpolator used in interpolate.interp1d to the B-Splines, or to give an option to switch between different spline interpolators (maybe with a warning: slow).
>>> 
>>> Ah - a last question: Why don't you  use the issues tab on the github page?
>>> 
>>> Thanks in advance,
>>>  Wolfgang
>>> _______________________________________________
>>> SciPy-User mailing list
>>> SciPy-User at scipy.org
>>> http://mail.scipy.org/mailman/listinfo/scipy-user
>> _______________________________________________
>> SciPy-User mailing list
>> SciPy-User at scipy.org
>> http://mail.scipy.org/mailman/listinfo/scipy-user
> 




More information about the SciPy-User mailing list