H

3次元配列をforで回したい! -Python

3次元配列を配列で回したい場合ってどうゆう挙動するんだろうね。検証してみた。

import numpy


a = numpy.arange(10) #ndim=1
a = numpy.array([a for i in range(10)]) #ndim=2
a = numpy.array([a for i in range(5)]) #ndim=3

for i in a:
 print(i)


出力

[[0 1 2 3 4 5 6 7 8 9]
...
[0 1 2 3 4 5 6 7 8 9]]
[[0 1 2 3 4 5 6 7 8 9]
...
[0 1 2 3 4 5 6 7 8 9]]

的な感じ。10*10の出力がされているから、for i in aの場合axis=0で回るっぽい。


じゃあこんなコードの場合

for i in a[0]:
  print(i)
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]

なるほど。これはaxis=1を軸にして回っているっぽい。
つまり、ネストが深くなるほど、axisはn+1になるらしい。