Iteration de tableau NumPy

Itération de tableau

L'itération signifie parcourir les éléments une à une.

Lorsque nous traitons des tableaux multidimensionnels dans numpy, nous pouvons utiliser les boucles for de base de python pour effectuer cette opération.

Si nous itérons sur un tableau 1-D, il parcourra chaque élément une à une.

Exemple

Itérer sur les éléments du tableau 1-D suivant :

import numpy as np
arr = np.array([1, 2, 3])
for x in arr:
  print(x)

Exécuter l'exemple

Itérer sur le tableau 2-D

Dans le tableau 2-D, il parcourra toutes les lignes.

Exemple

Itérer sur les éléments du tableau 2-D suivant :

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x in arr:
  print(x)

Exécuter l'exemple

Si nous itérons sur un tableau n-D, il parcourra l'axe n-1 une à une.

Pour retourner les valeurs réelles, les scalaires, nous devons itérer sur chaque dimension du tableau.

Exemple

Itérer sur chaque élément scalaire du tableau 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)

Exécuter l'exemple

Itérer sur le tableau 3-D

Dans le tableau 3-D, il parcourra tous les tableaux 2-D.

Exemple

Itérer sur les éléments du tableau 3-D suivant :

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)

Exécuter l'exemple

Pour retourner les valeurs réelles, les scalaires, nous devons itérer sur chaque dimension du tableau.

Exemple

Itérer jusqu'au scalaire :

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)

Exécuter l'exemple

Itérer sur le tableau à l'aide de nditer()

fonction nditer() est une fonction d'aide, utilisable à partir de l'itération la plus basique jusqu'à la plus avancée. Elle résout certains problèmes de base auxquels nous sommes confrontés lors de l'itération, et nous allons l'expliquer à travers des exemples.

itérer sur chaque élément scalaire

Dans les itérations de base for Dans la boucle, pour itérer sur chaque scalaire du tableau, nous devons utiliser n for Les boucles peuvent être difficiles à écrire pour des tableaux à plusieurs dimensions.

Exemple

Parcourir le tableau 3-D suivant :

import numpy as np
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
for x in np.nditer(arr):
  print(x)

Exécuter l'exemple

itérer sur des tableaux de différents types de données

Nous pouvons utiliser op_dtypes Paramètres, et passez le type de données attendu pour modifier le type de données des éléments lors de l'itération.

NumPy ne modifie pas le type de données des éléments en place (les éléments se trouvent dans l'array), donc il a besoin d'un peu d'espace supplémentaire pour effectuer cette opération, cet espace supplémentaire s'appelle le buffer, pour nditer() Pour l'activer dans flags=['buffered']

Exemple

Parcourir l'array sous forme de chaîne :

import numpy as np
arr = np.array([1, 2, 3])
for x in np.nditer(arr, flags=['buffered'], op_dtypes=['S']) :
  print(x)

Exécuter l'exemple

Itérer avec des pas différents

Nous pouvons utiliser le filtrage, puis itérer.

Exemple

Chaque fois que nous parcourons un élément scalaire d'un tableau 2D, nous sautons 1 élément :

import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for x in np.nditer(arr[:, ::2]):
  print(x)

Exécuter l'exemple

Itération avec ndenumerate()

L'énumération signifie mentionner l'ordre des choses une par une.

Parfois, nous avons besoin des indices correspondants des éléments lors de l'itération, pour ces cas, nous pouvons utiliser ndenumerate() Méthode.

Exemple

Énumérer les éléments du tableau 1D suivant :

import numpy as np
arr = np.array([1, 2, 3])
for idx, x in np.ndenumerate(arr):
  print(idx, x)

Exécuter l'exemple

Exemple

Énumérer les éléments de la 2D tableau suivant :

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)

Exécuter l'exemple