¿Existe una alternativa menos detallada para esto?
for x in xrange(array.shape[0]):
for y in xrange(array.shape[1]):
do_stuff(x, y)
Se me ocurrió esto:
for x, y in itertools.product(map(xrange, array.shape)):
do_stuff(x, y)
Lo que ahorra una sangría, pero sigue siendo bastante feo.
Espero algo parecido a este pseudocódigo:
for x, y in array.indices:
do_stuff(x, y)
¿Existe algo así?

for x, y in itertools.product(*map(xrange, array.shape)):Respuestas:
Creo que estás buscando el numeumerate .
En cuanto al rendimiento. Es un poco más lento que una lista de comprensión.
Si le preocupa el rendimiento, podría optimizar un poco más al observar la implementación de
ndenumerate, que hace 2 cosas, convertir a una matriz y hacer un bucle. Si sabe que tiene una matriz, puede llamar al.coordsatributo del iterador plano.fuente
Si solo necesita los índices, puede intentar
numpy.ndindex:fuente
ver nditer
fuente