Cómo iterar columnas en Numpy

Cómo iterar columnas en Numpy
En este artículo, estudiaremos cómo iterar las columnas de la matriz numpy. Veremos todos los métodos básicos de eso. También veremos algunos métodos avanzados de iteración como el método del objeto NDIter.

Método 1: Usando para bucle

En este método iterará la matriz 1-D (dimensional) con la ayuda del bucle for. Esta es solo una manera similar a los otros lenguajes de programación C, C ++, Python, etc.

importnumpyasnp
Arr = np.Arange (12)
Forvalinarr:
imprimir (val, end = ")

Producción:

0 1 2 3 4 5 6 7 8 9 10 11

Línea 1: Importamos la biblioteca numpy como np. Para que podamos usar este espacio de nombres (NP) en lugar del nombre completo Numpy.

Línea 2: Creamos una matriz de 12 elementos que se ve a continuación:

Array ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])

Línea 3 a 4: Ahora estamos usando un bucle for para iterar cada elemento de la matriz e imprimir ese valor de elemento.

Método 2: Uso de While Loop

En este método iterará la matriz 1-D (dimensional) con la ayuda del bucle While.

importnumpyasnp
Arr = np.Arange (12)
i = 0
mientras quearr [i] imprimir (arr [i])
i = i+1
if (i == arr.tamaño):
romper

Producción:

0
1
2
3
4
5
6
7
8
9
10
11

Línea 4 a 8: En este bucle, el bucle continúa hasta el tamaño de la matriz (arr. tamaño) es menor que el arr [i] porque, como sabemos, el valor del último elemento será 11 y el tamaño de la matriz es 12. Si la condición es verdadera, entonces imprima ese elemento e incrementa el valor de iteración (i) por 1. Si el recuento de valor de iteración es igual al tamaño de la matriz, entonces la ruptura llamará y saldrá del bucle. El arrugado.El tamaño devolverá el número de elementos en la matriz.

Método 3: iterando una matriz bidimensional

Para iterar la matriz bidimensional, necesitamos el bucle anidado. Pero si usamos el sencillo para bucle, entonces solo iteramos sobre la fila.

Entendamos esto con un ejemplo.

Arr = np.Arange (12).remodelar (4,3)
Para Row inarr:
Imprimir (fila)

Producción:

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

Línea 2 a 3: Obtuvimos la salida en cuanto a la fila porque, con la ayuda del bucle único, no pudimos iterar cada celda de la matriz 2-D.

Usando el bucle anidado.

Arr = np.Arange (12).remodelar (4,3)
Para Row inarr:
Para la celda en fila:
print (celular, end = '\ t')
imprimir ("\ n")

Producción:

0 1 2
3 4 5
6 7 8
9 10 11

Línea 2 a 5: En el programa anterior, usamos dos bucles para iterar una matriz 2-D. El primer bucle toma el valor de la fila del ARR, y el siguiente bucle accede a todos los elementos de esa matriz de fila e imprime en la pantalla como se muestra en la salida.

Método 4: Uso del método Flatten

Otro método es el método aplanado. El método Flatten convierte la matriz 2-D a una matriz de una sola dimensión. No necesitamos dos para bucles para iterar la matriz 2-D si usamos el método Flatten.

Arr = np.Arange (12).remodelar (4,3)
para celda inarr.aplanar():
Imprimir (Cell, End = ")

Producción:

0 1 2 3 4 5 6 7 8 9 10 11

Línea 2 a 3: El método Flatten () convirtió la matriz 2-D a una matriz 1-D, y la itreamos como lo hace la misma matriz 1-D. Aquí, no necesitamos usar dos para bucle.

Método 5: Uso del objeto NDITER

El Numpy también proporciona un método adicional para iterar la matriz 2-D. Este método se llama método NDITER. En el ejemplo anterior, también podemos intentarlo con el método NDIter como se da a continuación:

Arr = np.Arange (12).remodelar (4,3)
Para Cell Innp.nditer (arr):
Imprimir (Cell, End = ")

Producción:

0 1 2 3 4 5 6 7 8 9 10 11

Línea 2 a 3: Pasamos nuestra matriz al método nditer (), y ahora podemos acceder a cada elemento tal como lo hace el método Flatten ().

Orden de iteración nditer

También podemos controlar el método de acceso del NDIter por otro parámetro llamado orden. Si especificamos el pedido como C, entonces el NDITER accede a los elementos horizontales sabio, y si especificamos el pedido como F, entonces accederá a los elementos verticalmente. Entendamos esto con un ejemplo de cada pedido.

Ordene como C:

# C iteración de orden
Arr = np.Arange (12).remodelar (4,3)
Para Cell Innp.nditer (arr, orden = 'c'):
Imprimir (Cell, End = ")

Producción:

0 1 2 3 4 5 6 7 8 9 10 11

Si, solo imprimimos el ARR, obtenemos la salida como se da a continuación:

Array ([[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[9, 10, 11]])

Ahora, a medida que usamos el bucle nditer con el pedido como c. Entonces, accederá a los elementos horizontalmente. Entonces, si vemos en la salida de la matriz anterior, nuestros valores deben ser 0,1,2, entonces 3, 4, 5, etc. Entonces, nuestro resultado también está en la misma secuencia, que muestra que el orden C funciona horizontalmente.

Ordene como F:

# F iteración de orden
Arr = np.Arange (12).remodelar (4,3)
Para Cell Innp.nditer (arr, orden = 'f'):
Imprimir (Cell, End = ")

Producción:

0 3 6 9 1 4 7 10 2 5 8 11

Si, solo imprimimos el ARR, obtenemos la salida como se da a continuación:

Array ([[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[9, 10, 11]])

Ahora, a medida que usamos el bucle nditer con el pedido como F. Entonces, accederá a los elementos verticalmente. Entonces, si vemos en la salida de la matriz anterior, nuestros valores deben ser 0,3,6,9, entonces 1, 4, 7,10, etc. Entonces, nuestro resultado también está en la misma secuencia, que muestra que el orden F funciona verticalmente.

Método 6: Modificación a los valores de la matriz Numpy cuando se usa NDITER

Por defecto, el NDITER trata los elementos de la matriz como de solo lectura, y no podemos modificarlo. Si intentamos hacer eso, el Numpy aumentará un error.

Pero, si queremos editar los valores de la matriz Numpy, entonces tenemos que usar otro parámetro llamado OP_FLAGS = ['ReadWrite'].

Entendamos esto con un ejemplo:

Para Cell Innp.nditer (arr):
celda […] = celda*2

Producción:

---------------------------------------------------------------------------
ValueError TraceBack (la última llamada reciente)
en
1 para el innp celular.nditer (arr):
----> 2 celda […] = celda*2
ValueError: el destino de la asignación es de solo lectura

Con OP_FLAGS = ['ReadWrite'] parámetro.

Para Cell Innp.nditer (arr, op_flags = ['readwrite']):
celda […] = Cell-3
Arrugado

OUPUT:

Array ([[ -3, -2, -1],
[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])

Conclusión:

Entonces, en este artículo, hemos estudiado todos los métodos para iterar la matriz numpy. El mejor método es NDITER. Este método NDIter es más avanzado para manejar los elementos de matriz numpy. Aquí en este artículo, todos los conceptos básicos serán claros, y también puede ver algunos métodos más avanzados del nditer, como la iteración de reducción. Estos son los métodos como la iteración de reducción, que son las técnicas para manejar los elementos de matriz numpy en diferentes formas.

El código para este artículo está disponible en el siguiente enlace:

https: // github.com/shekharpandey89/numpy-columna-iterations-métodos