[Numpy-discussion] Need help for implementing a fast clip in numpy (was slow clip)

Charles R Harris charlesr.harris at gmail.com
Fri Jan 12 01:35:20 CST 2007


On 1/12/07, Charles R Harris <charlesr.harris at gmail.com> wrote:
>
>
>
> On 1/11/07, David Cournapeau <david at ar.media.kyoto-u.ac.jp> wrote:
> >
> > Travis Oliphant wrote:
> > >
> > > This is one thing I've exposed (and made use of in more than one
> > place)
> > > with NumPy.  In Numeric, the magic was in a few lines of the
> > ufuncobject
> > > file).  Now, it is exposed in the concept of an array
> > iterator.  Anybody
> > > can take advantage of it as it there is a C-API call to get an array
> > > iterator from the array (it's actually the object returned by the
> > .flat
> > > method).   You can even get an iterator that iterates over one-less
> > > dimension than the array has (with the dimension using the smallest
> > > strides left "un-iterated" so that you can call an inner loop with
> > it).
> > The thing which confuses me is whether this is useful when you only one
> > item of one array at a time. When I was implementing some functions for
> > LPC, I took a look at your examples for array iterators and explanations
> > in the numpy ebook, and it looked really helpful, indeed. For this kind
> > of code, I needed to operate on several contiguous elements at a time.
> >
> > But here, for cliping with scalar min and max, I only need to access to
> > one item at a time from the input array, and that's it; in particular, I
> >
> > don't care about the order of iteration. So the question really boils
> > down to:
> >
> > "for a numpy array a of eg float32, am I guaranteed that
> > a->data[sizeof(float32) * i] for 0 <= i < a.size gives me all the items
> > of a, even for non contiguous arrays ?"
>
>
> No. That is what the array iterator is for.
>

Although it is pretty common to make a copy of the array that *is*
contiguous and pass that down. Doing so keeps life simple for the programmer
and is pretty much required when interfacing to third party c and fortran
routines.

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.scipy.org/pipermail/numpy-discussion/attachments/20070112/9fc03afe/attachment-0001.html 


More information about the Numpy-discussion mailing list