/ / Iterate over numpy matrix o nieznanym wymiarze - python, matrix, numpy, enumerate

Iterate over numpy matrix o nieznanym wymiarze - python, matrix, numpy, enumerate

Mam wielowymiarową tablicę numpy, którą chciałbym iterować, chcę mieć dostęp do nie tylko wartości, ale także ich indeksów.

for idx,val in enumerate(my_array):

nie wydaje się działać, gdy my_array jestwielowymiarowy. (Chciałbym, aby idx był krotką) .Zasilane dla pętli może działać, ale nie znam liczby wymiarów tablicy do czasu wykonania, i wiem, że nie jest ona odpowiednia dla pythona. wiele sposobów na to (rekursja, liberalne użycie operatora%), ale żaden z nich nie wydaje się bardzo "python-esque". Czy istnieje prosty sposób?

Odpowiedzi:

7 dla odpowiedzi № 1

Myślę, że chcesz 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)]