NumPy 配列のイテレーション
- 前のページ NumPy 配列のリシャーピング
- 次のページ NumPy 配列の結合
配列イテレーション
イテレートとは、要素を逐次に巡回することを意味します。
NumPyで多次元配列を処理する際には、Pythonの基本的なforループを使用してこの操作を実行できます。
1-D 配列に対してイテレートする場合、各要素を逐次に巡回します。
例
以下の一次元配列の要素をイテレートする
import numpy as np arr = np.array([1, 2, 3]) for x in arr: print(x)
2-D 配列をイテレートする
2-D 配列では、すべての行を巡回します。
例
以下の2次元配列の要素をイテレートする
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) for x in arr: print(x)
n-D 配列をイテレートする場合、それは逐次にn-1次元を巡回します。
実際の値、スカラを返すには、各次元の配列をイテレートする必要があります。
例
2-D 配列の各スカラ要素をイテレートする
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) for x in arr: for y in x: print(y)
3-D 配列をイテレートする
3-D 配列では、すべての 2-D 配列を巡回します。
例
以下の 3-D 配列の要素をイテレートする
import numpy as np arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]) for x in arr: print(x)
実際の値、スカラを返すには、各次元の配列をイテレートする必要があります。
例
スカラにイテレートする
import numpy as np arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]) for x in arr: for y in x: for z in y: print(z)
nditer()を使用して配列をイテレートする
関数 nditer()
これは非常に基本的なイテレーションから非常に高度なイテレーションまで使用できる補助関数です。それは、イテレーション中に直面するいくつかの基本的な問題を解決し、例を通じて紹介します。
各スカラ要素を巡回する
基本的な for
ループ中、配列の各スカラ要素をイテレートするために、n個の for
ループは、高次元の配列に対して難しいことがあります。
例
以下の 3-D 配列を巡回します:
import numpy as np arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) for x in np.nditer(arr): print(x)
異なるデータ型の配列をイテレートする
私たちは以下のように使用できます op_dtypes
パラメータを渡し、期待されるデータ型を指定して、イテレーション中に要素のデータ型を変更することができます。
NumPy は配列内の要素のデータ型を就地変更しません(要素は配列内に位置します),そのため、この操作を実行するために他のスペースが必要であり、これらの追加スペースは buffer と呼ばれます、 nditer()
それを有効にする場合、以下のように引数を渡します flags=['buffered']
。
例
配列を文字列形式で巡回します:
import numpy as np arr = np.array([1, 2, 3]) for x in np.nditer(arr, flags=['buffered'], op_dtypes=['S']): print(x)
異なるステップで巡回
フィルタリングしてから巡回することができます。
例
2D 配列のスカラー要素を順に巡回し、1つの要素をスキップします:
import numpy as np arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) for x in np.nditer(arr[:, ::2]): print(x)
ndenumerate()を使用して列挙する
列挙とは、順番に事物の番号を挙げることです。
迭代中に要素の対応するインデックスが必要な場合、これらの用例に対して使用できます ndenumerate()
メソッド。
例
以下の 1D 配列の要素を列挙します:
import numpy as np arr = np.array([1, 2, 3]) for idx, x in np.ndenumerate(arr): print(idx, x)
例
以下の 2D 配列の要素を列挙します:
import numpy as np arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) for idx, x in np.ndenumerate(arr): print(idx, x)
- 前のページ NumPy 配列のリシャーピング
- 次のページ NumPy 配列の結合