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).