[Numpy-discussion] Proposal of new function: iteraxis()

Matthew Brett matthew.brett@gmail....
Thu Apr 25 12:30:38 CDT 2013


On Thu, Apr 25, 2013 at 10:14 AM, Robert Kern <robert.kern@gmail.com> wrote:
> On Wed, Apr 24, 2013 at 10:37 PM, andrew giessel
> <andrew.giessel@gmail.com> wrote:
>> Hello all-
>> A while back I emailed the list about function for the numpy namespace,
>> iteraxis(), which allows you to generalize the default iteration behavior of
>> numpy arrays over any axis.
>> I've implemented this function more cleanly and the pull request is here:
>> https://github.com/numpy/numpy/pull/3262, and includes passing tests and
>> documentation.
>> This is very simple code, which uses np.rollaxis() to bring the desired
>> dimension to the front, and then allows you to loop over slices in this
>> re-structured view of the array.  While little more than an alias, I feel
>> this is a very useful function because looping over iterators is a core
>> pattern in python, and makes working with slices of any multidimensional
>> array very pythonic.  Adding this function makes this more visible for
>> users, new and old, and I hope members of this list will agree it is worth
>> adding to the namespace.
> I'm afraid I don't. It's a just a reduced-functionality version of
> rollaxis(). I don't think the additional name adds anything
> substantial.

There's a little more on this in the pull request discussion for those
of y'all that are interested.

So the decision has to be based on some estimate of:

1) Cost for adding a new function to the namespace
2) Benefit : some combination of: Likelihood of needing to iterate
over arbitrary axis. Likelihood of not finding rollaxis / transpose as
a solution to this. Increased likelihood of finding iteraxis in this

As a data point - Gael pointed me to rollaxis back in the day, I
didn't find it myself, and although it was completely obvious in
retrospect, it had not previously occurred to me to use transposing
for this task.



More information about the NumPy-Discussion mailing list