[Numpy-discussion] Add an axis argument to generalized ufuncs?

Nathaniel Smith njs at pobox.com
Sat Oct 18 21:46:41 EDT 2014

On Sat, Oct 18, 2014 at 5:56 AM, Stephan Hoyer <shoyer at gmail.com> wrote:
> Here are my initial thoughts on the syntax:
> (1) Generally speaking, I think the "nested tuple" syntax (e.g., axis=[(0,
> 1), (2, 3)]) would be most congruous with the axis arguments numpy already
> supports.
> (2) For gufuncs with simpler signatures, we should support supplying an
> integer or an unnested tuple, e.g.,
> - axis=0 for (n)->()
> - axis=(0, 1) for (n)(m)->() or (n,m)->()
> - axis=[(0, 1), 2] for (n,m),(o)->().

One thing we'll have to watch out for is that for reduction operations
(which are basically gufuncs with (n)->() signatures), we already
allow axis=(0,1) to mean "reshape axes 0 and 1 together into one big
axis, and then use that as the gufunc core axis". I don't know if
we'll ever want to support this functionality for gufuncs in general,
but we shouldn't rule it out with the syntax.

One option would be to add a new argument axes=... for gufunc core
specification, and say that axis=foo is an alias for axes=[[foo]].


Nathaniel J. Smith
Postdoctoral researcher - Informatics - University of Edinburgh

More information about the NumPy-Discussion mailing list