2012-07-28 88 views
2

我有一个多维numpy数组我想迭代。我希望能够访问的不仅是价值观,而且还有它们的指数。不幸的是,迭代未知维度的numpy矩阵

for idx,val in enumerate(my_array): 

似乎不工作时,my_array是多维的。 (我希望idx是一个元组)。嵌套for循环可能会起作用,但直到运行时我才知道数组的维数,而且我知道它不适用于python。我可以想到很多方法可以做到这一点(递归,自由使用%运算符),但没有一个看起来像'python-esque'。有一个简单的方法吗?

+0

'enumerate'始终返回的第一个值的整数。你特别期待idx包含什么? – Fraxtil 2012-07-28 00:48:14

回答

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)] 
+0

argv!我只是查阅文档发布链接。 – mgilson 2012-07-28 00:49:57

+0

@mgilson:嘿,既然你是10k人员的成员,你可以看到我们所有人发生这种事的频率。 ; ^) – DSM 2012-07-28 00:50:41

+0

是的,我想你是对的。 (顺便说一下) – mgilson 2012-07-28 00:51:50