[Numpy-discussion] very simple iteration question.

Anne Archibald peridot.faceted at gmail.com
Wed Apr 30 13:24:43 EDT 2008


2008/4/30 Christopher Barker <Chris.Barker at noaa.gov>:
> a g wrote:
>  > OK: how do i iterate over an axis other than 0?
>
>  This ties in nicely with some of the discussion about interating over
>  matrices. It ahs been suggested that it would be nice to have iterators
>  for matrices, so you could do:
>
>  for row in M.rows:
>    ...
>
>  and
>
>  for column in M.cols:
>    ...
>
>
>  If so, then wouldn't it make sense to have built in iterators for
>  nd-arrays as well? something like:
>
>  for subarray in A.iter(axis=i):
>     ...
>
>  where axis would default to 0.
>
>  This is certainly cleaner than:
>
>  for j in range(A.shape[i]):
>      subarray = A[:,:,j,:]
>
>  Wait! I have no idea how to spell that generically -- i.e. the ith
>  index, where i is a variable. There must be a way to build a slice
>  object dynamically, but I don't know it.

Slices can be built without too much trouble using slice(), but it's
much easier to just write

for subarray in np.rollaxis(A,i):
    ...

rollaxis() just pulls the specified axis to the front. (It doesn't do
what I thought it would, which is a cyclic permutation of the axes).

Anne



More information about the NumPy-Discussion mailing list