[PYTHON MATRIX-SIG] Re: take() again

Jim Hugunin hugunin@mit.edu
Thu, 22 Aug 1996 11:32:56 -0400

Carlos Fonseca wrote:
> One could always write take(a,[indices]) to get the current behaviour with
> axis=2, if indices is 1d. More generally, one could write
> take( a[(ni-1)*(NewAxis,)],indices[(Ellipses,)+ax*(NewAxis,)+(All,)] )

You aren't seriously suggesting that people write python code that looks
like this?

I think that everybody could be made happy if I added the following
function to alpha3:

permute(a, permutation)

a and permutation must be aligned for as many axes as there are in
permutation.  The elements of a will be resorted according to the
elements of permutation.

ie. permute(a, argsort(a)) <==> sort(a)

I think that with this function and take almost everything that you want
to do with Carlos' fancy take would be possible.  I also think that
having two fairly easy to understand functions is a better situation
than having one really complicated one.

permute(a, indices) <==> take(a, indices)
	iff:	len(indices) = len(a)
		len(indices.shape) = 1

Opinions? - Jim

MATRIX-SIG  - SIG on Matrix Math for Python

send messages to: matrix-sig@python.org
administrivia to: matrix-sig-request@python.org