[Numpy-discussion] subtract.reduce behavior

Johann Hibschman jhibschman+numpy@gmail....
Mon Jul 26 08:41:15 CDT 2010

Pauli Virtanen <pav@iki.fi> 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 mailing list