Contenu du cours
Numpy Ultime
Numpy Ultime
Indexation par Tableau d'Entiers
En plus de l'indexation de base, où nous utilisons un entier pour un seul index, NumPy nous permet également d'utiliser un tableau 1D d'entiers entier (une liste d'entiers est également possible) pour l'indexation.
Indexation par tableau d'entiers dans les tableaux 1D
Chaque élément du tableau d'entiers utilisé pour l'indexation est traité comme un index, donc, par exemple, array[[0, 1, 3]]
récupère les éléments aux indices 0
, 1
et 3
sous la forme d'un tableau 1D, étant donné que array
est lui-même un tableau 1D. Vous pouvez également utiliser des tableaux NumPy pour l'indexation, mais cela rend le code plus lourd.
import numpy as np array = np.array([23, 41, 7, 80, 3]) # Retrieving elements at indices 0, 1 and 3 print(array[[0, 1, 3]]) # Retrieving elements at indices 1, -1 and 2 in this order print(array[[1, -1, 2]]) # IndexError is thrown since index 5 is out of bounds print(array[[2, 5]])
Indexation de tableau entier dans les tableaux 1D
En parlant des tableaux 2D et de dimensions supérieures, l'indexation de tableau entier fonctionne de la même manière que dans les tableaux 1D le long de chaque axe. Si nous utilisons seulement un tableau entier pour l'indexation, nous indexons le long d'un seul axe (axe 0). Si nous utilisons deux tableaux séparés par une virgule, nous indexons le long des deux axes (axe 0 et axe 1).
L'indexation uniquement le long de l'axe 0 à l'aide d'un tableau d'entiers renvoie un tableau 2D. Lorsque nous accédons aux éléments via une telle indexation, nous les regroupons dans un nouveau tableau. Ce nouveau tableau est constitué de tableaux 1D, et les regrouper augmente la dimensionnalité d'un, résultant en un tableau 2D.
L'indexation le long de l'axe 0 et l'axe 1 à l'aide de deux tableaux d'entiers renvoie un tableau 1D.
Remarque
Tous les tableaux entiers utilisés pour chacun des axes doivent avoir la même forme.
import numpy as np array_2d = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]) # Retrieving first and the third row print(array_2d[[0, 2]]) # Retrieving the main diagonal elements print(array_2d[[0, 1, 2], [0, 1, 2]]) # Retrieving the first and third element of the second row print(array_2d[1, [0, 2]]) # IndexError is thrown, since index 3 along axis 0 is out of bounds print(array_2d[[0, 3], [0, 1]])
Comme vous pouvez le voir, nous pouvons également combiner l'indexation entière de base et l'indexation de tableau entier.
Remarque
Encore une fois, si au moins un des indices est hors limites, une
IndexError
est levée.
En parlant d'applications, une telle indexation est utile lorsque vous devez sélectionner des éléments spécifiques qui ne sont pas adjacents ou qui ne suivent pas un ordre régulier. Contrairement au découpage, qui fonctionne avec des plages continues, cette méthode vous permet de choisir exactement quels éléments récupérer. Elle est utile lorsque vous souhaitez extraire des données dispersées ou réorganiser des valeurs dans un tableau.
1. Vous analysez les données de ventes mensuelles (en milliers) pour cinq produits. Quel est le résultat du code ?
2. Le tableau temperatures
représente les températures hebdomadaires (en °C) de trois villes pour lundi, mardi et mercredi. Sélectionnez l'option correcte pour récupérer les températures de Berlin lundi et mardi, et de Madrid mardi.
Merci pour vos commentaires !