Gibt es eine weniger ausführliche Alternative dazu:
for x in xrange(array.shape[0]):
for y in xrange(array.shape[1]):
do_stuff(x, y)
Ich habe mir das ausgedacht:
for x, y in itertools.product(map(xrange, array.shape)):
do_stuff(x, y)
Das spart eine Einrückung, ist aber immer noch ziemlich hässlich.
Ich hoffe auf etwas, das wie dieser Pseudocode aussieht:
for x, y in array.indices:
do_stuff(x, y)
Gibt es so etwas?
for x, y in itertools.product(*map(xrange, array.shape)):
Antworten:
Ich denke, Sie suchen die Zahl .
In Bezug auf die Leistung. Es ist etwas langsamer als ein Listenverständnis.
Wenn Sie sich Sorgen über die Leistung machen, können Sie ein wenig weiter optimieren, indem Sie sich die Implementierung von ansehen
ndenumerate
, die zwei Dinge bewirkt: Konvertieren in ein Array und Schleifen. Wenn Sie wissen, dass Sie ein Array haben, können Sie das.coords
Attribut des flachen Iterators aufrufen .quelle
Wenn Sie nur die Indizes benötigen, können Sie Folgendes versuchen
numpy.ndindex
:quelle
siehe nditer
quelle