Itération de tableau NumPy


Itérer des tableaux

Itérer signifie parcourir les éléments un par un.

Comme nous traitons des tableaux multidimensionnels dans numpy, nous pouvons le faire en utilisant la forboucle de base de python.

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

Exemple

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

import numpy as np

arr = np.array([1, 2, 3])

for x in arr:
  print(x)

Itération de tableaux 2D

Dans un tableau 2-D, il passera par toutes les lignes.

Exemple

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

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

for x in arr:
  print(x)

Si nous itérons sur un tableau n -D, il passera par la n-1ème dimension une par une.

Pour renvoyer les valeurs réelles, les scalaires, nous devons itérer les tableaux dans chaque dimension.

Exemple

Itérez sur chaque élément scalaire du tableau 2D :

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

for x in arr:
  for y in x:
    print(y)


Itération de tableaux 3D

Dans un tableau 3-D, il passera par tous les tableaux 2-D.

Exemple

Itérer sur les éléments du tableau 3D 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)

Pour renvoyer les valeurs réelles, les scalaires, nous devons itérer les tableaux dans chaque dimension.

Exemple

Itérer jusqu'aux scalaires :

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)

Itération de tableaux à l'aide de nditer()

La fonction nditer()est une fonction d'aide qui peut être utilisée à partir d'itérations très basiques jusqu'à des itérations très avancées. Il résout certains problèmes de base auxquels nous sommes confrontés lors de l'itération, passons en revue avec des exemples.

Itérer sur chaque élément scalaire

Dans les forboucles de base, en parcourant chaque scalaire d'un tableau, nous devons utiliser n for boucles qui peuvent être difficiles à écrire pour les tableaux à très haute dimensionnalité.

Exemple

Parcourez le tableau 3D suivant :

import numpy as np

arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

for x in np.nditer(arr):
  print(x)

Itération d'un tableau avec différents types de données

Nous pouvons utiliser un op_dtypesargument et lui transmettre le type de données attendu pour modifier le type de données des éléments lors de l'itération.

NumPy ne change pas le type de données de l'élément en place (où l'élément est dans le tableau) donc il a besoin d'un autre espace pour effectuer cette action, cet espace supplémentaire est appelé buffer, et pour l'activer dans nditer()we pass flags=['buffered'].

Exemple

Parcourez le tableau 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)

Itérer avec différentes tailles de pas

Nous pouvons utiliser le filtrage et le suivi d'itérations.

Exemple

Parcourez chaque élément scalaire du tableau 2D en sautant 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)

Itération énumérée à l'aide de ndenumerate()

L'énumération signifie mentionner le numéro de séquence de quelque chose un par un.

Parfois, nous avons besoin de l'index correspondant de l'élément lors de l'itération, la ndenumerate()méthode peut être utilisée pour ces cas d'utilisation.

Exemple

Énumérer sur les éléments de tableaux 1D suivants :

import numpy as np

arr = np.array([1, 2, 3])

for idx, x in np.ndenumerate(arr):
  print(idx, x)

Exemple

Énumérer sur les éléments de tableau 2D suivants :

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)