/ / Iterajte nad nadmernou maticou neznámej dimenzie - python, matica, numpy, enumerate

Iterajte nad matnou maticou neznámej dimenzie - python, matrix, numpy, enumerate

Mám multidimenzionálne pole, ktoré by som chcel opakovať Chcem mať prístup nielen k hodnotám, ale aj k ich indexom.Bohužiaľ,

for idx,val in enumerate(my_array):

nezdá sa, že funguje, keď je my_arraymultidimenzionálne. (Ja by som rád idx byť n-tice) .Next pre slučky by mohlo fungovať, ale neviem, koľko rozmerov poľa až do runtime, a ja viem, že to nie je vhodné pre python rovnako. niekoľko spôsobov, ako to urobiť (rekurzia, liberálne využitie operátora%), ale žiadny z nich sa nezdá byť veľmi "python-esque". Existuje jednoduchý spôsob?

odpovede:

7 pre odpoveď č. 1

Myslím, že chcete ndenumerate:

>>> import numpy
>>> a = numpy.arange(6).reshape(1,2,3)
>>> a
array([[[0, 1, 2],
[3, 4, 5]]])
>>> list(numpy.ndenumerate(a))
[((0, 0, 0), 0), ((0, 0, 1), 1), ((0, 0, 2), 2), ((0, 1, 0), 3), ((0, 1, 1), 4), ((0, 1, 2), 5)]