[Numpy-discussion] subtract.reduce behavior
Mon Jul 26 08:41:15 CDT 2010
Pauli Virtanen <firstname.lastname@example.org> writes:
>> Returning a *right* identity for an operation that is otherwise a *left*
>> fold is very odd, no matter how you slice it. That is what looks like
>> special casing...
> I think I see your point now.
I know this is unlikely to happen, since it would break things for a
mostly-cosmetic (and that probably only in my eyes) improvement, but if
reduce were defined as a *right* fold, then it would make sense for
subtract (and divide) to use the right identity.
A right fold is also perhaps more interesting, since it can be used to
do alternating series, while the regular left-fold of subtract is pretty
pointless. It also seems more natural that subtract.reduce() returns
0, because then we can partition the sequence however we want and
preserve np.subtract.reduce(np.append(x[:i], np.subtract.reduce(x[i:])))
== np.subtract.reduce(x) for any i.
But that's really just idle musing. This is, by the way, how J (the
APL-derived array language) does it, but there it's very natural to do
right folds since all operations are right-associative.
More information about the NumPy-Discussion