Bac à sable Chaînes et listes Fonctions Numpy Piles Récursivité Tris

numpy

Le module numpy permet d'utiliser des tableaux (array) (type numpy.ndarray) dont les propriétés sont analogues à celles de vecteurs ou de matrices.
Contrairement aux listes, les éléments d’un tableau doivent être de même type.
Un tableau T peut être unidimensionnel ou multidimensionnel, il peut être défini par extension ou par compréhension.

Tableau unidimensionnel (vecteur)

T = np.array(liste de valeurs)
On accède à un élément du tableau T comme à un élément d’une liste, via son index (la numérotation commence également à 0) grâce à une instruction de la forme T[i].
T.size renvoie 4 dans cet exemple (nombre total d'éléments).
T.shape renvoie (4,) indiquant qu'il s'agit d'un tableau unidimensionnel.
La somme de deux tableaux de même taille correspond à la somme de deux vecteurs (somme des "coordonnées") et la multiplication par un scalaire correspond de la même façon à la multiplication d'un vecteur par un scalaire.

Exemples


Tableau bidimensionnel (matrice)

T = np.array(liste de listes de valeurs)
Le tableau T est constitué de lignes et de colonnes et on accède à l’élément de la ligne i et de la colonne j par T[i, j] ou T[i][j].
T.size renvoie 6 dans cet exemple (nombre total d'éléments).
T.shape renvoie (2,3) indiquant qu'il s'agit d'un tableau bidimensionnel à 2 lignes et 3 colonnes.
Les images sont des matrices de pixels, chaque pixel étant une liste ou un tableau de 3 ou 4 valeurs (cf. tutoriel Images numériques).

Exemples


Extraction de valeurs - Techniques de slicing

L’instruction T[i, :] renvoie la ligne i
L’instruction T[:, j] renvoie la colonne j
L’instruction T[i:] renvoie toutes les lignes à partir de la ligne i (incluse)
L’instruction T[:j] renvoie toutes les lignes jusqu’à la ligne j (exclue)
L’instruction T[i:j] renvoie toutes les lignes entre les ligne i (incluse) et j (exclue)

Exemples


numpy (suite)

Tableau par compréhension

np.arange([start, ]stop, [step, ]dtype=None) (généralise range aux flottants, valeur finale exclue).
dtype est le type de données : int, float, np.uint8 (entier non signé sur 8 bits), np.uint16...


np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)


np.zeros((n,m),dtype) et np.ones((n,m),dtype) permettent de créer des tableaux de dimension \(n \times m\) remplis de 0 ou de 1.
np.full((n,m),v,dtype) permet de créer des tableaux de dimension \(n \times m\) remplis avec la valeur v (équivalent à np.ones((n,m))*v).
np.empty((n,m),dtype permet de créer des tableaux de dimension \(n \times m\) remplis de valeurs indéterminées.
Pour des tableaux unidimensionnels : np.zeros(n,dtype), np.ones((n,dtype)...
dtype est le type de données (float par défaut).


Copy et reshape

U = T.copy() pour copier un tableau (ou une liste).
T.reshape((n,m)) permet de redimensionner le tableau (attention à respecter \(n \times m = T.size\)).


Fonctions vectorielles

Les fonctions numpy sont des fonctions vectorielles : elles peuvent être appliquées à des listes ou des tableaux (array) et le résultat est alors un tableau (type numpy.ndarray). La fonction est appliquée « automatiquement » à chaque élément du tableau.
A contrario, les fonctions du module math sont des fonctions scalaires (qui ne s'appliquent qu'à des nombres mais ni à des listes ni à des tableaux).
Les fonctions mathématiques usuelles de numpy peuvent être appliquées à un tableau ou à une liste.

Il est possible de transformer une fonction f(x) définie par l’utilisateur en fonction vectorielle grâce à la commande np.vectorize(f) : cf. numpy vectorize.


Documentation

NumPy (site officiel, en anglais).

Tutoriel NumPy (site officiel, en anglais).