どうも、ちょげ(@chogetarou)です。
Numpy配列の要素をインデックス(index)付きでループする方法を紹介します。
方法

1次元の場合
Numpy配列の要素をインデックス(index)付きでループするには、enumerate()を使います。
まず、for文のinの左辺に、ループ変数をカンマ区切りで2つ指定します。
inの右辺に、enumerate()を指定し、enumerate()の引数に対象のNumpy配列を指定します。
そして、for文のループ処理を指定します。
ループ処理では、1つ目のループ変数でNumpy配列のインデックス、2つ目で要素を取得します。
#arr=対象のNumpy配列
for index, item in enumerate(arr):
#ループ処理
#ループ変数「index」でインデックス、「item」で要素を取得
上記のfor文は、Numpy配列の要素をインデックス付きでループします。
多次元の場合
もし、Numpy配列が多次元の場合は、numpy.ndenumerate()を使います。
まず、for文のinの左辺に、ループ変数をカンマ区切りで2つ指定します。
inの右辺に、numpy.ndenumerate()を指定し、numpy.ndenumerate()の引数に対象のNumpy配列を指定します。
そして、for文のループ処理を指定します。
ループ処理では、1つ目のループ変数でNumpy配列のインデックス、2つ目で要素を取得します。
#arr=対象のNumpy配列
for index, item in np.ndenumerate(arr):
#ループ処理
#ループ変数「index」でインデックス、「item」で要素を取得
上記のfor文は、多次元のNumpy配列の要素をインデックス付きでループします。
使用例
1次元の場合
import numpy as np
nums = np.array([1, 2, 3, 4, 5, 6])
for index, item in enumerate(nums):
print("インデックス", index, "は", item)
出力:
インデックス 0 は 1
インデックス 1 は 2
インデックス 2 は 3
インデックス 3 は 4
インデックス 4 は 5
インデックス 5 は 6
2次元の場合
import numpy as np
nums = np.array([[1, 2, 3], [4, 5, 6]])
for index, item in np.ndenumerate(nums):
print("インデックス", index, "は", item)
出力:
インデックス (0, 0) は 1
インデックス (0, 1) は 2
インデックス (0, 2) は 3
インデックス (1, 0) は 4
インデックス (1, 1) は 5
インデックス (1, 2) は 6
コメント