[Numpy-discussion] by axis iterator

Gabriel Gellner ggellner at uoguelph.ca
Wed Nov 12 13:47:33 EST 2008


Something I use a lot is a little generator that iterates over a ndarray by a
given axis. I was wondering if this is already built-in to numpy (and not
using the apply_along_axis which I find ugly) and if not would there be
interest in adding it?

the function is just:

def by_axis(nobj, axis=0):
    index_set = [slice(None)]*len(ndobj.shape)
        for i in xrange(ndobj.shape[axis]):
            index_set[axis] = i
            yield ndobj[index_set]

and can be just like

>>> [sum(x) for x in by_axis(a, 1)]
>>> for col in by_axis(a, 1):
...     print col

I use it when porting R code that uses a lot of apply like logic. I know most
numpy functions have the axis argument built in, but when writing my own
functions I find this a real time saver.

Anyway, if someone can show be a better way I would be overjoyed, or if people
like this I can make a ticket on Trac.

Gabriel



More information about the NumPy-Discussion mailing list