Dans NumPy, vous pouvez utiliser la constante intégrée Python E𝐥𝐥𝐢𝐩𝐬𝐢𝐬 (représentée par trois points, … ) entre [] pour omettre de définir les dimensions intermédiaires d’un tableau ( 𝐧𝐝𝐚𝐫𝐫𝐚𝐲 ).
Pour plus d’informations sur la manière de définir si des éléments doivent être omis lors de la sortie de 𝐧𝐝𝐚𝐫𝐫𝐚𝐲 avec 𝐩𝐫𝐢𝐧𝐭() , reportez-vous à l’article suivant.
Constante intégrée Python E𝐥𝐥𝐢𝐩𝐬𝐢𝐬 (trois points, … )
En Python, E𝐥𝐥𝐢𝐩𝐬𝐢𝐬 est défini comme une constante intégrée.
print(Ellipsis) # Ellipsis
E𝐥𝐥𝐢𝐩𝐬𝐢𝐬 peut également être représenté par … , composé de trois points.
print(...) # Ellipsis
E𝐥𝐥𝐢𝐩𝐬𝐢𝐬 et … sont le même objet 𝐞𝐥𝐥𝐢𝐩𝐬𝐢𝐬 .
print(type(Ellipsis)) # <class 'ellipsis'> print(type(...)) # <class 'ellipsis'> print(Ellipsis is ...) # True
Depuis Python 3.12, E𝐥𝐥𝐢𝐩𝐬𝐢𝐬 ( … ) n’a pas de rôle spécifique dans la syntaxe de base, mais NumPy offre une application pratique, comme démontré ci-dessous.
E𝐥𝐥𝐢𝐩𝐬𝐢𝐬 ( … ) dans NumPy
Dans NumPy, E𝐥𝐥𝐢𝐩𝐬𝐢𝐬 ( … ) vous permet d’omettre les dimensions intermédiaires de la spécification d’une plage d’un tableau ( 𝐧𝐝𝐚𝐫𝐫𝐚𝐲 ) avec [] .
Considérez le tableau à quatre dimensions suivant comme exemple.
import numpy as np print(np.__version__) # 1.26.1 a = np.arange(120).reshape(2, 3, 4, 5) print(a.shape) # (2, 3, 4, 5)
Par exemple, pour matérialiser uniquement la dernière dimension, vous pouvez l’écrire en utilisant : comme ci-dessous.
print(a[:, :, :, 0]) # [[[ 0 5 10 15] # [ 20 25 30 35] # [ 40 45 50 55]] # # [[ 60 65 70 75] # [ 80 85 90 95] # [100 105 110 115]]]
En utilisant … , on peut l’écrire comme suit.
print(a[..., 0]) # [[[ 0 5 10 15] # [ 20 25 30 35] # [ 40 45 50 55]] # # [[ 60 65 70 75] # [ 80 85 90 95] # [100 105 110 115]]]
Il en va de même lorsque vous spécifiez uniquement la première et la dernière dimension. Les dimensions intermédiaires peuvent être omises avec … .
print(a[0, :, :, 0]) # [[ 0 5 10 15] # [20 25 30 35] # [40 45 50 55]] print(a[0, ..., 0]) # [[ 0 5 10 15] # [20 25 30 35] # [40 45 50 55]]
Vous pouvez également utiliser E𝐥𝐥𝐢𝐩𝐬𝐢𝐬 au lieu de … .
print(a[Ellipsis, 0]) # [[[ 0 5 10 15] # [ 20 25 30 35] # [ 40 45 50 55]] # # [[ 60 65 70 75] # [ 80 85 90 95] # [100 105 110 115]]] print(a[0, Ellipsis, 0]) # [[ 0 5 10 15] # [20 25 30 35] # [40 45 50 55]]
Dans un exemple à quatre dimensions, la différence entre l’utilisation de : et de … est minime. Cependant, … devient plus pratique pour les tableaux de plus grande dimension. Alors que : nécessite de faire correspondre le nombre de dimensions, … n’a pas cette exigence.
L’utilisation de deux ou plusieurs … crée une ambiguïté quant à l’endroit à omettre et entraîne une erreur.
# print(a[..., 0, ...]) # IndexError: an index can only have a single ellipsis ('...')
Si : est utilisé pour chaque dimension jusqu’à la dernière, il peut être entièrement omis. Dans de tels cas, il n’est pas nécessaire d’utiliser … , bien que son inclusion n’entraîne pas d’erreur.
print(a[0, 0, :, :]) # [[ 0 1 2 3 4] # [ 5 6 7 8 9] # [10 11 12 13 14] # [15 16 17 18 19]] print(a[0, 0]) # [[ 0 1 2 3 4] # [ 5 6 7 8 9] # [10 11 12 13 14] # [15 16 17 18 19]] print(a[0, 0, ...]) # [[ 0 1 2 3 4] # [ 5 6 7 8 9] # [10 11 12 13 14] # [15 16 17 18 19]]
