NumPy proporciona un objeto iterador multidimensional llamado nditer para iterar los elementos de una matriz. Por ejemplo, puedes usar nditer en el ejemplo anterior como:
<pre>12para la célula en np.nditer(A):print(cell, end=' ')</pre>
pitón
Salida:
<pre>101234567891011</pre>
pitón
Orden de Iteración de Nditer
Puede controlar cómo se accede a los elementos con nditer usando el parámetro de orden. Si especificas el orden como C, entonces se sigue el orden C, que es el que atraviesa los elementos de la matriz horizontalmente. Si especificas el orden como F, se sigue el orden Fortran, que es el que atraviesa los elementos de la matriz verticalmente.
Por ejemplo, para obtener la orden $0027C$0027:
<pre>12para la célula en np.nditer(A, order='C'):print(cell, end=' ')</pre>
pitón
Salida:
<pre>101234567891011</pre>
pitón
Para conseguir la orden de Fortran:
<pre>12para la célula en np.nditer(A, order='F'):print(cell, end=' ')</pre>
pitón
Salida:
<pre>103691471025811</pre>
pitón
Por defecto, nditer sigue el orden «k», lo que significa que sigue un orden que coincide con la disposición de la memoria de la matriz. Este ajuste predeterminado le permite acceder a los elementos en el menor tiempo posible. Para probarlo, definamos una matriz $0027B$0027 como la transposición de la matriz bidimensional $0027A$0027. Así que lo hemos hecho:
<pre>1A</pre>
pitón
Salida:
<pre>1234array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])</pre>
pitón
Y la matriz de transposición $0027B$0027:
<pre>12B = A.TB</pre>
pitón
Salida:
<pre</pre>123array([[0,3,6,9],[1,4,7,10],[2,5,8,11]])</pre>
pitón
Así que, si iteramos con el orden por defecto «k», deberíamos ver la misma salida para ambas matrices «A» y «B».
<pre>12para la célula en np.nditer(A):print(cell, end=' ')</pre>
pitón
Salida:
<pre>101234567891011</pre>
python<pre>12para x en np.nditer(B):print(x, end=' ')</pre>
pitón
Salida:
<pre>101234567891011</pre>
pitón