Numpy-iterating-over-array
NumPy-配列の繰り返し
NumPyパッケージには、イテレータオブジェクト numpy.nditer が含まれています。 これは効率的な多次元反復子オブジェクトであり、これを使用して配列を反復処理できます。 配列の各要素には、Pythonの標準のIteratorインターフェースを使用してアクセスします。
arange()関数を使用して3X4配列を作成し、 nditer を使用して繰り返します。
例1
このプログラムの出力は次のとおりです-
例2
反復の順序は、特定の順序を考慮せずに、アレイのメモリレイアウトに一致するように選択されます。 これは、上記の配列の転置を反復することで確認できます。
上記のプログラムの出力は次のとおりです-
反復順序
同じ要素がFスタイルの順序を使用して格納されている場合、反復子は配列を反復するより効率的な方法を選択します。
例1
その出力は次のようになります-
numpyをnp a = np.arange(0,60,5)a = a.reshape(3,4)としてインポート
print '元の配列は:' print '\ n'
np.nditer(a、order = 'C')のxに対して 'Cスタイルの順序で並べ替え:'を出力:xを印刷、 '\ n’を印刷
np.nditer(a、order = 'F')のxに対して 'Fスタイルの順序で並べ替え:'を印刷:xを印刷、
元の配列は次のとおりです。[[Cスタイルの順序で並べ替え:0 5 10 15 20 25 30 35 40 45 50 55
Fスタイルの順序で並べ替え:0 20 40 5 25 45 10 30 50 15 35 55
import numpy as np a = np.arange(0,60,5)a = a.reshape(3,4)print 'Original array is:' print a print '\ n'
np.nditer(a、op_flags = ['readwrite'])のxの場合:x […] = 2 * x print 'Modified array is:' print a
元の配列:[[変更された配列:[[外部ループ
nditerクラスのコンストラクターには、次の値を取ることができる ’flags’ パラメーターがあります-
Sr.No. | Parameter & Description |
---|---|
1 |
c_index C_orderインデックスを追跡できます |
2 |
f_index Fortran_orderインデックスが追跡されます |
3 |
multi-index 反復ごとに1つのインデックスのタイプを追跡できます |
4 |
external_loop 指定された値を、ゼロ次元配列ではなく複数の値を持つ1次元配列にします |
例
次の例では、各列に対応する1次元配列が反復子によって走査されます。
出力は次のとおりです-
放送の反復
2つの配列が broadcastable である場合、結合された nditer オブジェクトはそれらを同時に反復処理できます。 配列 a の次元が3X4であり、次元1X4の別の配列 b があると仮定すると、次の型の反復子が使用されます(配列 b は a のサイズにブロードキャストされます)。
例
その出力は次のようになります-