On 5/13/07, Zachary Pincus <[EMAIL PROTECTED]> wrote:

Hello all,

I've got a few questions that came up as I tried to calculate various
statistics about an image time-series. For example, I have an array
of shape (t,x,y) representing t frames of a time-lapse of resolution
(x,y).

Now, say I want to both argsort and sort this time-series, pixel-
wise. (For example.)

In 1-d it's easy:
indices = a.argsort()
sorted = a[indices]

I would have thought that doing this on my 3-d array would work
similarly:
indices = a.argsort(axis=0)
sorted = a.take(indices, axis=0)

Unfortunately, this gives a ValueError of "dimensions too large."
Now, I know that 'a.sort(axis=0)' works fine for the given example,
but I'm curious about how to this sort of indexing operation in the
general case.


Unfortunately, argsort doesn't work transparently with take or fancy
indexing for multidimensional arrays. I am thinking of adding a function
argtake for this, and also for the results returned by argmax and argmin,
but at the moment you have to fill in the  values of the other indices and
use fancy indexing. For now, it is probably simpler, prettier, and faster to
just sort the array.

Chuck
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to