Indexation avancée NumPy
NumPy propose plus de méthodes d'indexation qu'une séquence Python typique.
En plus de l'indexation par entiers et par tranches vue précédemment, les tableaux peuvent être indexés par des tableaux d'entiers, par indexation booléenne et par indexation fantaisiste.
L'indexation avancée dans NumPy désigne l'utilisation de tableaux d'entiers, de tableaux booléens ou d'autres séquences pour accéder aux éléments d'un tableau. Par rapport à l'indexation de base, l'indexation avancée permet d'accéder à n'importe quel élément d'un tableau et peut être utilisée pour effectuer des opérations et des modifications complexes sur les tableaux.
Indexation par tableaux d'entiers
L'indexation par tableaux d'entiers consiste à utiliser un tableau pour accéder aux éléments d'un autre tableau. Chaque élément de ce tableau est une valeur d'indice le long d'une certaine dimension du tableau cible.
L'exemple suivant récupère l'élément dans le tableau(0,0),(1,1)et(2,0)à la position donnée.
Exemple
Le résultat de sortie est:
[1 4 5]
L'exemple suivant récupère les éléments des quatre coins d'un tableau 4X3. Les indices de ligne sont [0,0] et [3,3], et les indices de colonne sont [0,2] et [0,2].
Exemple
Le résultat de sortie est:
我们的数组是: [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] 这个数组的四个角元素是: [[ 0 2] [ 9 11]]
Le résultat renvoyé est un objet ndarray contenant chaque élément de coin.
Vous pouvez utiliser le slicing:ou…combiné avec des tableaux d'indices. Comme dans l'exemple suivant :
Exemple
Le résultat de sortie est:
[[5 6] [8 9]] [[5 6] [8 9]] [[2 3] [5 6] [8 9]]
Indexation booléenne
Nous pouvons indexer le tableau cible avec un tableau booléen.
L'indexation booléenne utilise des opérations booléennes (telles que les opérateurs de comparaison) pour obtenir un tableau d'éléments qui satisfont à la condition spécifiée.
L'exemple suivant obtient les éléments supérieurs à 5 :
Exemple
Le résultat de sortie est:
我们的数组是: [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] 大于 5 的元素是: [ 6 7 8 9 10 11]
L'exemple suivant utilise~(l'opérateur de complément) pour filtrer NaN.
Exemple
Le résultat de sortie est:
[ 1. 2. 3. 4. 5.]
L'exemple suivant montre comment filtrer les éléments non complexes d'un tableau.
Exemple
La sortie est la suivante :
[2.0+6.j 3.5+5.j]
Indexation fantaisiste
L'indexation fantaisiste désigne l'indexation à l'aide de tableaux d'entiers.
L'indexation fantaisiste prend des valeurs en fonction des valeurs du tableau d'index comme indices sur un certain axe du tableau cible.
Lors de l'utilisation d'un tableau d'entiers unidimensionnel comme index, si la cible est un tableau unidimensionnel, le résultat de l'indexation est l'élément à la position correspondante ; si la cible est un tableau bidimensionnel, il s'agit de la ligne correspondant à l'indice.
Contrairement au découpage, l'indexation avancée copie toujours les données dans un nouveau tableau.
Tableau à une dimension
Un tableau à une dimension n'a qu'un seul axeaxis = 0, donc un tableau à une dimension prend des valeurs suraxis = 0cet axe :
Exemple
x = np.arange(9)
print(x)
# Lire l'élément correspondant à l'index spécifié dans un tableau à une dimension
print("-------Lire l'élément correspondant à l'index-------")
x2 = x[[0, 6]] # Utilisation de l'indexation avancée
print(x2)
print(x2[0])
print(x2[1])
Le résultat de sortie est:
[0 1 2 3 4 5 6 7 8] -------读取下标对应的元素------- [0 6] 0 6
Tableau à deux dimensions
1. Passer un tableau d'indices séquentiels
Exemple
print (x[[4,2,1,7]])Afficher les lignes correspondant aux indices4, 2, 1, 7et le résultat de sortie est :
[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15] [16 17 18 19] [20 21 22 23] [24 25 26 27] [28 29 30 31]] -------读取下标对应的行------- [[16 17 18 19] [ 8 9 10 11] [ 4 5 6 7] [28 29 30 31]]
2. Passer un tableau d'indices en ordre inverse
Exemple
Le résultat de sortie est:
[[16 17 18 19] [24 25 26 27] [28 29 30 31] [ 4 5 6 7]]
3. Passer plusieurs tableaux d'indices (utiliser np.ix_)
La fonction np.ix_ prend deux tableaux et produit une relation de correspondance de leur produit cartésien.
Le produit cartésien en mathématiques désigne le produit cartésien (produit cartésien) de deux ensembles X et Y, également appelé produit direct, notéX×Y, où le premier objet est un membre de X et le second objet est un membre de Y, formant toutes les paires ordonnées possibles.
Par exempleA={a,b}, B={0,1,2}, alors :
A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}
B×A={(0, a), (0, b), (1, a), (1, b), (2, a), (2, b)}
Exemple
Le résultat de sortie est:
[[ 4 7 5 6] [20 23 21 22] [28 31 29 30] [ 8 11 9 10]]Autres extensions