迭代未知维度的numpy矩阵

use*_*954 3 python numpy enumerate matrix

我有一个多维的numpy数组,我想迭代.我希望不仅能够访问值,还能访问它们的索引.不幸,

for idx,val in enumerate(my_array):
Run Code Online (Sandbox Code Playgroud)

当my_array是多维的时候似乎不起作用.(我希望idx成为一个元组).嵌套for循环可能有效,但我不知道数组的维数,直到运行时,我知道它不适合python.我可以想到很多方法(递归,自由使用%运算符),但这些都不是'python-esque'.有一个简单的方法吗?

DSM*_*DSM 7

我想你想要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)]
Run Code Online (Sandbox Code Playgroud)