HOWTO · NumPy

Obtenir la longueur du tableau NumPy

Utilisez `len(array)` pour obtenir la longueur du premier axe d’un tableau NumPy, `array.size` pour compter tous ses éléments et `array.shape` pour connaître la longueur de chaque dimension.

Sur cette page

Utilisez len(array) pour obtenir la longueur du premier axe d’un tableau NumPy, array.size pour compter tous ses éléments et array.shape pour connaître la longueur de chaque dimension. Ces expressions répondent à des questions différentes : pour un tableau à deux dimensions, len(array) donne le nombre de lignes, array.size le nombre total d’éléments et array.shape les nombres de lignes et de colonnes.

Obtenir la longueur d’un tableau NumPy et le nombre total d’éléments

La fonction intégrée à Python len() renvoie la longueur du premier axe d’un tableau qui possède au moins une dimension. Pour un tableau unidimensionnel, elle correspond aussi au nombre total d’éléments. Pour un tableau multidimensionnel, elle compte les groupes extérieurs, et non chaque élément individuellement.

L’attribut ndarray.size renvoie le nombre total d’éléments, tous axes confondus. Il s’écrit array.size, sans parenthèses. Il fonctionne avec les tableaux unidimensionnels comme multidimensionnels : il n’est pas nécessaire d’aplatir le tableau pour compter ses éléments.

Cet exemple autonome nécessite NumPy.

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

import numpy as np

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

print("Vector length:", len(vector))
print("Vector element count:", vector.size)
print("Array length:", len(array))
print("Array element count:", array.size)
Vector length: 6
Vector element count: 6
Array length: 2
Array element count: 6

Le vecteur contient six éléments sur son unique axe : sa longueur et son nombre total d’éléments sont donc identiques. Le tableau à deux dimensions comporte deux lignes de trois éléments chacune. Sa longueur sur le premier axe correspond donc au nombre de lignes, tandis que son nombre total inclut les éléments des deux lignes.

NumPy fournit également la fonction np.size(array), qui renvoie le nombre total d’éléments lorsqu’aucun axe n’est indiqué. Contrairement à l’attribut, cette fonction accepte un axe : np.size(array, axis=1) donne la longueur du deuxième axe. Choisissez l’attribut pour obtenir le total et précisez un axe lorsque vous avez besoin d’une dimension particulière. Ces deux opérations ne comptent pas uniquement les valeurs distinctes ou non nulles.

Examiner les dimensions d’un tableau NumPy

L’attribut ndarray.shape renvoie un tuple contenant une longueur par axe. Il s’écrit array.shape, sans parenthèses. La fonction correspondante est np.shape(array) ; elle renvoie également la forme du tableau, et non un nombre scalaire d’éléments.

Pour le tableau à deux dimensions présenté plus haut, la forme est (2, 3) : deux lignes et trois colonnes. Utilisez array.shape[0] pour obtenir le nombre de lignes et array.shape[1] pour celui des colonnes. Ne décomposez le tuple avec rows, columns = array.shape que si le tableau a exactement deux dimensions.

Pour un tableau unidimensionnel de six éléments, la forme est (6,) : un tuple à un seul élément, et non l’entier 6. Une forme telle que (2, 3, 4) décrit trois axes. Multipliez toutes les longueurs d’axe pour obtenir le nombre total d’éléments ; multiplier seulement les deux premières ne convient pas en général aux dimensions supérieures. Si vous avez simplement besoin du total, utilisez array.size.

Le nombre d’éléments du tuple de forme correspond au nombre de dimensions, également accessible avec array.ndim. Un tableau scalaire tel que np.array(7) a la forme () et contient un élément, mais ne possède pas de premier axe : len() n’est donc pas défini pour lui. Si un tableau dont la structure vous est inconnue ne se comporte pas comme un tableau de lignes et de colonnes, examinez sa forme avant d’indexer ses dimensions ou de décomposer le tuple.