Python >> Tutoriel Python >  >> Python Tag >> NumPy

Comment indexer des éléments dans des tableaux NumPy ?

NumPy est une bibliothèque Python populaire pour la science des données pour les calculs de tableaux, de vecteurs et de matrices. Ce puzzle présente l'indexation de base des éléments dans les tableaux NumPy.

Formulation du problème : Comment indexer des éléments dans des tableaux NumPy ?

Indexation de tableaux 1D avec des indices positifs

L'utilisation la plus simple de l'indexation est la notation entre crochets et les entiers positifs :

>>> import numpy as np
>>> a = np.array([1, 2, 3])
>>> a
array([1, 2, 3])
>>> a[0]
1
>>> a[1]
2
>>> a[2]
3

Si vous utilisez un index positif supérieur ou égal au nombre d'éléments dans le tableau, Python lancera un IndexError :

>>> import numpy as np
>>> a = np.array([1, 2, 3])
>>> a[3]
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    a[3]
IndexError: index 3 is out of bounds for axis 0 with size 3

Indexation de tableaux 1D avec des indices négatifs

Vous pouvez également utiliser des indices négatifs pour accéder aux éléments du tableau, en commençant par le dernier élément et en vous déplaçant vers la gauche :

>>> import numpy as np
>>> a = np.array([8, 7, 5, 4, 9, 1, 9, 5])
>>> a[-1]
5
>>> a[-2]
9
>>> a[-3]
1
>>> a[-4]
9
>>> a[-5]
4
>>> a[-6]
5
>>> a[-7]
7
>>> a[-8]
8

Si vous vous déplacez plus loin dans le négatif, Python lancera un IndexError :

>>> a[-9]
Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    a[-9]
IndexError: index -9 is out of bounds for axis 0 with size 8

Indexation des tableaux 2D NumPy

Si vous utilisez des tableaux à deux dimensions, vous pouvez indexer des éléments individuels avec la notation entre crochets et des valeurs d'index séparées par des virgules, une par axe. La première valeur d'index donne l'index de ligne et la deuxième valeur d'index donne l'index de colonne :

>>> import numpy as np
>>> a = np.array([[42, 8, 7],
		  [99, 3, 4]])
>>> a[0, 0]
42
>>> a[1, 2]
4
>>> a[1, 1]
3

Vous pouvez également utiliser une indexation négative sur un ou les deux axes.

>>> a[-1, -1]
4

Si vous accédez à des éléments en dehors de la limite de l'index maximal possible, Python lève un IndexError :

>>> a[2, 1]
Traceback (most recent call last):
  File "<pyshell#28>", line 1, in <module>
    a[2, 1]
IndexError: index 2 is out of bounds for axis 0 with size 2

Tableaux multidimensionnels d'indexation de tableaux NumPy

Si vous utilisez des tableaux multidimensionnels, vous pouvez indexer des éléments individuels avec la notation entre crochets et des valeurs d'index séparées par des virgules, une par axe.

>>> import numpy as np
>>> a = [[[1, 1], [2, 3]],
	 [[4, 3], [8, 9]]]
>>> a = np.array(a)
>>> a[0, 0, 0]
1
>>> a[0, 0, 1]
1
>>> a[0, 1, 0]
2
>>> a[0, 1, 1]
3
>>> a[1, 0, 0]
4
>>> a[1, 0, 1]
3
>>> a[1, 1, 0]
8
>>> a[1, 1, 1]
9

En règle générale : le premier élément dans la notation entre crochets séparés par des virgules identifie l'axe le plus à l'extérieur, le deuxième élément le deuxième axe le plus à l'extérieur, et ainsi de suite.

Puzzle d'indexation de tableau NumPy

Entraînez vos compétences en résolvant le casse-tête NumPy suivant sur l'indexation et l'arithmétique de base des tableaux :

import numpy as np

# air quality index AQI data
hong_kong = np.array([42, 40, 41, 43, 44, 43])
new_york = np.array([30, 31, 29, 29, 29, 30])
montreal = np.array([11, 11, 12, 13, 11, 12])

hk_mean = (hong_kong[0] + hong_kong[-1]) / 2.0
ny_mean = (new_york[1] + new_york[-3]) / 2.0
m_mean = (montreal[1] + montreal[-0]) / 2.0

print(hk_mean)
print(ny_mean)
print(m_mean)

Quel est le résultat de ce puzzle ?
*Niveau Débutant* (solution ci-dessous)

Vous pouvez résoudre ce casse-tête sur notre application interactive Finxter et suivre votre niveau de compétence ici :

Le puzzle analyse les données de l'indice de qualité de l'air (IQA) en temps réel pour les trois villes de Hong Kong, New York et Montréal. Les données de l'indice regroupent divers facteurs qui influent sur la qualité de l'air, tels que les particules respirables, l'ozone et le dioxyde d'azote. L'objectif est de comparer les données sur la qualité de l'air pour les trois villes. Pour montrer comment fonctionne l'indexation, nous utilisons différents schémas d'indexation pour accéder à deux valeurs de données pour chaque ville. Ensuite, nous normalisons les données par 2.0.

Vous pouvez utiliser des indices positifs ou négatifs. Pour les index positifs, utilisez 0 pour accéder au premier élément et incrémentez l'index de 1 pour indexer chaque élément suivant. Pour les index négatifs, utilisez -1 pour accéder au dernier élément et décrémentez l'index de 1 pour accéder à chaque élément précédent. C'est aussi simple que cela.

Êtes-vous un codeur maître?
Testez vos compétences maintenant !

Vidéo associée