[Numpy-discussion] extension to xrange for numpy
gruben at bigpond.net.au
Sat Apr 1 18:46:07 CST 2006
A few rough thoughts:
I'm a bit ambivalent about this. It's not very n-dimensional and
enforces an x,y,z,(t?) ordering of the array dimensions which some
programmers may not want to adhere to. On the occasions I've had to
write code which loops over multiple dimensions, I've found the python
cookbook routines for permutation and combination generators really useful
so I'd find some sort of numpy iterator equivalents of these more
useful. This would allow list comprehensions like
[f(x,y,z) for (x,y,z) in ndrange(10,10,10)]
It would also be good to have it able to specify the rank of the object
returned to allow whole array rows or matrices to be returned i.e. array
slices. Maybe the ndrange function could allow something like
[f(xy,z) for (xy,z) in ndrange((10,0,1),10)]
where you use a tuple to specify a range and the axes to slice out.
[f(x,yz) for (x,yz) in ndrange(10,(10,1,2))]
[f(xz,y) for (xz,y) in ndrange((10,0,2),(10,1))]
On the other hand your idea would potentially make some code a lot
easier to understand, so I'm not against it and if it was picked up, I'd
propose "t" or "w" for the 4th dimension. It might help to post some
code that you think might benefit from your idea.
Arnd Baecker wrote:
> Dear numpy enthusiasts,
> one python command which is extremely useful in 1D situations
> is `xrange`. However, for higher dimensional
> settings we strongly lack the commands `yrange` and `zrange`.
> These could be shorthands for the corresponding
> constructs with `:,NewAxis` added.
> Any comments, suggestion and even implementations are very welcome,
> P.S.: What I am not sure about is the right command for
> the 4-dimensional case - which letter should be used after the "z"?
> (it seems that "a" would be a very natural choice...)
More information about the Numpy-discussion