[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