[Numpy-discussion] suggested change of behavior for interp
Eric Firing
efiring at hawaii.edu
Tue Jun 4 22:21:05 EDT 2013
On 2013/06/04 4:15 PM, Benjamin Root wrote:
> Could non-monotonicity be detected as part of the interp process?
> Perhaps a sign switch in the deltas?
There are two code paths, depending on the number of points to be
interpolated. When it is greater than the size of the table, the deltas
are pre-computed in a single sweep. Non-monotonicity could be detected
there at moderate cost. In the other code path, for a smaller number of
points, the deltas are computed only as needed, so monotonicity testing
would require a separate sweep through the points. That's the costly
case that I think might reasonably be an option but that should not be
required.
Eric
>
> I have been bitten by this problem too.
>
> Cheers!
> Ben Root
>
> On Jun 4, 2013 9:08 PM, "Eric Firing" <efiring at hawaii.edu
> <mailto:efiring at hawaii.edu>> wrote:
> >
> > On 2013/06/04 2:05 PM, Charles R Harris wrote:
> > >
> > >
> > > On Tue, Jun 4, 2013 at 12:07 PM, Slavin, Jonathan
> > > <jslavin at cfa.harvard.edu <mailto:jslavin at cfa.harvard.edu>
> <mailto:jslavin at cfa.harvard.edu <mailto:jslavin at cfa.harvard.edu>>> wrote:
> > >
> > > Hi,
> > >
> > > I would like to suggest that the behavior of numpy.interp be
> changed
> > > regarding treatment of situations in which the x-coordinates
> are not
> > > monotonically increasing. Specifically, it seems to me that interp
> > > should work correctly when the x-coordinate is decreasing
> > > monotonically. Clearly it cannot work if the x-coordinate is not
> > > monotonic, but in that case it should raise an exception.
> Currently
> > > if x is not increasing it simply silently fails, providing
> incorrect
> > > values. This fix could be as simple as a monotonicity test and
> > > inversion if necessary (plus a raise statement for
> non-monotonic cases).
> > >
> > >
> > > Seems reasonable, although it might add a bit of execution time.
> >
> > The monotonicity test should be an option if it is available at all;
> > when interpolating a small number of points from a large pair of arrays,
> > the single sweep through the whole array could dominate the execution
> > time. Checking for increasing versus decreasing, in contrast, can be
> > done fast, so handling the decreasing case transparently is reasonable.
> >
> > Eric
> >
> > >
> > > Chuck
> >
> > _______________________________________________
> > NumPy-Discussion mailing list
> > NumPy-Discussion at scipy.org <mailto:NumPy-Discussion at scipy.org>
> > http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
More information about the NumPy-Discussion
mailing list