From: Faheem M. <fa...@em...> - 2004-05-10 23:31:23
|
On Tue, 20 Apr 2004, Todd Miller wrote: > On Mon, 2004-04-19 at 23:20, Faheem Mitha wrote: > > > > Yes, that works. Thanks. > > > > In [13]: numarray.objects.add.reduce(s,dim=1) > > Out[13]: ObjectArray(['abc', 'def', 'ghi']) > > > > BTW, that makes me wonder what the rules are for the order in which this > > reduction proceeds for arrays bigger than dimension two. Since there is no > > total order in this case, the answer is not obvious. > > (I think) the answer is that for numarray, reductions ultimately occur > along the innermost axis. Off-axis reductions are performed by a > swapaxis between the off-axis and the innermost axis, followed by the > reduction, followed by a swapaxis back between the new innermost axis > and the off-axis. I'm not sure there's an especially good reason for > the swap back (since the original swapped axis no longer exists), but > it seems to be what Numeric does and not doing it in numarray broke > extension (linear_algebra?) self-tests. > > > For string > > concatentation (since it is not commutative) at least this matters. I > > didn't see this documented in the manual but I may have missed it. > > Reductions always occur in order of increasing indexes with the > "reduction-so-far" as the left operand and the next index as the right > operand. Reductions occur in a sort of depth-first manner with the > outermost dimensions varying most slowly. Sorry about the slow reply. This message got lost in the mess in my inbox, which I have recently being cleaning out. I just wanted to say that it would be useful to have the above documented in some appropriate place in the numarray manual. 99% of the time the exact procedure for a reduction won't matter, but when someone is using a non-commutative operator it will. If this is documented in the manual I could not find it. Thanks. Faheem. |