4

繰り返し処理したい多次元のnumpy配列があります。値だけでなく、そのインデックスにもアクセスできるようにしたいと考えています。不運にも、

for idx,val in enumerate(my_array):

my_array が多次元の場合は機能しないようです。(idxをタプルにしたい)。ネストされた for ループは機能する可能性がありますが、配列の次元数は実行時までわかりません。とにかく、Python には適していません。これを行う方法はいくつか考えられますが (再帰、% 演算子の自由な使用)、どれも「Python 風」とは思えません。簡単な方法はありますか?

4

1 に答える 1

10

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)]
于 2012-07-28T00:49:20.357 に答える