[Numpy-discussion] very simple iteration question.
Wed Apr 30 12:24:43 CDT 2008
2008/4/30 Christopher Barker <Chris.Barker@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:
> 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).
More information about the Numpy-discussion