[Numpy-discussion] ndrange, like range but multidimensiontal

Allan Haldane allanhaldane at gmail.com
Sun Oct 7 17:20:11 EDT 2018


On 10/07/2018 10:32 AM, Mark Harfouche wrote:
> With `np.ndrange` it can look something like this:
> 
> ```
> c = np.empty((4, 4), dtype=object)
> # ... compute on c
> for i in np.ndrange(c.shape)[:, 1:-1]:
>      c[i] # = some operation on c[i] that depends on the index i
> ```
> 
> very pythonic, very familiar to numpy users

So if I understand, this does the same as `np.ndindex` but allows 
numpy-like slicing of the returned generator object, as requested in #6393.

I don't like the duplication in functionality between ndindex and 
ndrange here. Better rather to add the slicing functionality to ndindex, 
  than create a whole new nearly-identical function. np.ndindex is 
already a somewhat obscure and discouraged method since it is usually 
better to find a vectorized numpy operation instead of a for loop, and I 
don't like adding more obscure functions.

But as an improvement to np.ndindex, I think adding this functionality 
seems good if it can be nicely implemented. Maybe there is a way to use 
the same optimization tricks as in the current implementation of ndindex 
but allow different stop/step? A simple wrapper of ndindex?

Cheers,
Allan


More information about the NumPy-Discussion mailing list