outer idiom (was Re: [Numpy-discussion] Getting the indexes of themyarray.min())

Perry Greenfield perry at stsci.edu
Thu May 13 14:31:01 CDT 2004


Álvaro Tejero Cantero wrote:
>
> but this gives
> >>> subtract.outer(r,r).shape
> (10, 3, 10, 3)
>
> that is, subtracts y coordinates to x coordinates which is not intended.
> AFAIK the outer solution is MUCH faster than the nested for loops, so
> what I do now is
>
> >>> r_rel = transpose(array([subtract.outer(r[:,0],r[:,0]),
>                              subtract.outer(r[:,1],r[:,1]),
>                              subtract.outer(r[:,2],r[:,2])]))
> >>> r_rel.shape #as with the double loop
> (10,10,3)
>
>
> My question is then if there is any more elegant way to do this,
> especially giving as a result independence of the number of dimensions).
>
Not that I can think of at the moment.

> Maybe an "axis"  (=0 in this case?) keyword for the outer function would
> be useful in this context?
>
Perhaps. Right now these ufunc methods are pretty complicated so
it may not be easy to do, but I understand that there is certainly
utility in being able to do that. We'll look into it (but not
right away so don't hold your breath).

Perry





More information about the Numpy-discussion mailing list