Bibliothèque Numpy
Imane ARMAILI
CPGE EL KHANSAA - CASABLANCA / MPSI
2024 - 2025
1 Calcul scientifique : numpy
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 2 / 34
Calcul scientifique : numpy
numpy
• Les vecteurs, les matrices et les tableaux de dimensions supérieures
sont des types de données fréquemment utilisés dans le calcul
scientifique.
• Pour optimiser les traitements effectués sur ces données, il nous
faut une structure qui permette d’effectuer des calculs vectorisés
plutôt que des calculs séquentiels basés sur des boucles (comme
avec les listes). En effet, les calculs vectorisés sont plus rapides
que les calculs séquentiels.
• En Python, la bibliothèque numpy propose une structure de don-
nées hautement performante pour effectuer des calculs vectorisés.
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 3 / 34
Calcul scientifique : numpy
Définition
NumPy (Numerical Python) est une bibliothèque Python dédiée au
calcul scientifique. Elle fournit un nouveau type de données appelé
ndarray (tableau NumPy) pour modéliser les vecteurs, les matrices et,
plus généralement, les tableaux à n dimensions.
• Les tableaux NumPy sont de type homogène, ce qui signifie qu’ils
ne contiennent que des éléments du même type de données.
• Les tableaux NumPy possèdent une taille fixe définie lors de leur
création, contrairement aux listes Python dont la taille peut être
modifiée dynamiquement.
• Ces deux contraintes présentent les avantages de cette structure :
Taille fixe → Tableau de référence mémoire invariable et accès à
ses éléments en temps constant.
Homogénéité → opérations optimisées.
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 4 / 34
Calcul scientifique : numpy
Importation de numpy
La structure de données : ndarray
• En plus des données stockées dans le tableau multidimensionnel
(ndarray), cette structure de données contient également des mé-
tadonnées importantes sur le ndarray, telles que : sa forme, sa
taille, Son type de données ... etc.
Les métadonnées fournissent des informations supplémentaires sur les
données principales. Par exemple, le titre, l’auteur, la date de publica-
tion ...etc, d’un livre constituent des métadonnées.
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 5 / 34
Calcul scientifique : numpy
• On peut accéder à ces informations via les mots-clés suivants :
shape : un tuple qui contient le nombre d’éléments (c’est-à-dire
la longueur) de chaque dimension (axe) du ndarray.
size : le nombre total d’éléments dans le ndarray.
ndim : nombre de dimensions.
nbytes : nombre d’octets utilisés pour stocker les données.
dtype : le type de données des éléments du ndarray.
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 6 / 34
Calcul scientifique : numpy
Types de données
• Les différents types de données numériques supportés par NumPy
sont montrés ci-dessous :
dtype Variants Description
int int8, int16, int32, int64 entiers relatifs
uint uint8, uint16, uint32, uint64entiers naturels
booléen (True ou
bool bool False)
nombre à virgule
float float16, float32, float64, float128 flottante
complex complex64, complex128, complex256 nombres complexes
De même, numpy supporte également les types de données non numé-
riques, comme les chaînes de caractères.
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 7 / 34
Calcul scientifique : numpy
Création d’un ndarray
• NumPy offre plusieurs fonctions permettant la création de ta-
bleaux multidimensionnels (ndarrays). Nous citons :
np.array(iterable) : crée et renvoie un ndarray dont les éléments
proviennent d’un itérable, par exemple une liste, un tuple,.. ou un
autre objet ndarray.
np.zeros(shape, dtype) : crée et renvoie un ndarray de dimen-
sion shape et de type dtype (optionnel) rempli de zéros.
np.ones(shape, dtype) : crée et renvoie un ndarray de dimension
shape et de type dtype (optionnel) rempli de uns.
np.diag(iterable) : crée et renvoie une matrice diagonale avec
les valeurs spécifiées dans iterable sur la diagonale et des zéros
ailleurs.
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 8 / 34
Calcul scientifique : numpy
np.eye(n) : crée et renvoie une matrice d’ordre n avec des uns
sur la diagonale et des zéros ailleurs. Si on modifie la valeur du
paramètre k (par défaut k=0) de np.eye() par exemple en utilisant
la valeur 1, alors les uns seront placés sur la sur-diagonale de la
matrice.
np.identity(n) : crée et renvoie une matrice d’identité d’ordre n.
np.arange(deb, fin, pas) : crée et renvoie un ndarray d’une sé-
quence de nombres régulièrement espacés entre les bornes deb
(incluse) et fin (exclue). Les paramètres deb et pas sont option-
nels. Leurs valeurs par défaut sont 0 et 1.
np.linspace(a, b, nbr_points) : crée et renvoie un tableau 1D
allant d’une valeur de départ a à une valeur de fin b avec un
nombre donné d’éléments (nbr_points).
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 9 / 34
Calcul scientifique : numpy
np.random.rand(d1, d2, ..., dn) : crée et renvoie un ndarray rem-
pli de nombres aléatoires flottants distribués uniformément entre
0 (inclus) et 1 (exclu). Si seulement d1 est spécifié, alors le ndar-
ray est un vecteur. Si d1 et d2 sont présents, alors le ndar-
ray est une matrice. Et ainsi de suite. Si aucun argument n’est
fourni (np.random.rand()), renvoie un seul nombre aléatoire com-
pris entre 0 et 1.
Exemple :
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 10 / 34
Calcul scientifique : numpy
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 11 / 34
Calcul scientifique : numpy
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 12 / 34
Calcul scientifique : numpy
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 13 / 34
Calcul scientifique : numpy
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 14 / 34
Calcul scientifique : numpy
Création d’un ndarray en copiant les propriétés d’un autre
ndarray
• Parfois, il est nécessaire de créer un nouvel ndarray en reprenant
les caractéristiques d’un autre ndarray, telles que sa dimension et
son type de données.
np.ones_like(A) : crée et renvoie un ndarray rempli de uns ayant
les mêmes propriétés que le ndarray A passé en argument.
np.zeros_like(A) : crée et renvoie un ndarray rempli de zeros
ayant les mêmes propriétés que le ndarray A passé en argument.
np.full_like(A, k) : crée et renvoie un ndarray rempli des valeurs
k ayant les mêmes propriétés que le ndarray A passé en argument.
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 15 / 34
Calcul scientifique : numpy
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 16 / 34
Calcul scientifique : numpy
Indexation et slicing
• On peut accéder aux éléments d’un ndarray en utilisant l’opérateur
[ ].
• Deux types d’indexation : positive et négative (similaires aux listes).
• Vecteur (tableau 1D) : Les tranches (slices) sont créées en uti-
lisant la notation ; qui est également utilisée pour les listes Python.
Dans cette notation, une plage d’éléments peut être sélectionnée
en utilisant une expression telle que A[m :n :p].
A[m] : Sélectionner l’élément à l’index m, où m est un entier.
A[m :n] : Sélectionner les éléments d’un tableau A d’indices allant
de m à n-1 (m et n sont des entiers).
A[m :] : Sélectionner les éléments d’un tableau A à partir de
l’indice m (entier) jusqu’à la fin.
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 17 / 34
Calcul scientifique : numpy
A[ :n] : Sélectionner les éléments d’un tableau A du premier
élément (indice 0) jusqu’à l’élément d’indice n-1 (inclus).
A[ :] : Sélectionner tous les éléments du tableau A.
A[m :n :p] : Sélectionner les éléments qui commencent depuis
l’indice m jusqu’à n (exclus), avec un pas de p.
A[ : :-1] : Sélectionner tous les éléments, dans l’ordre inverse.
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 18 / 34
Calcul scientifique : numpy
• Tableaux multidimensionnels : On applique le principe de sli-
cing d’un tableau 1D sur chaque axe (dimension) pour sélectionner
des éléments à partir d’un tableau multidimensionnel (ndarray).
• Considérons l’exemple suivant :
• On peut extraire des colonnes ou des lignes à partir d’un tableau
multidimensionnel en utilisant une combinaison de slicing et d’in-
dexation par entiers :
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 19 / 34
Calcul scientifique : numpy
• En appliquant un slicing sur chacun des axes du tableau, on peut
extraire des sous-tableaux (sous-matrices dans l’exemple bidimen-
sionnel) :
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 20 / 34
Calcul scientifique : numpy
• Vues
• Les sous-tableaux extraits à partir d’un tableau de n dimensions
via l’opération de slicing sont des vues alternatives des mêmes
données contenues dans le tableau multidimensionnel en question.
Ce sont des tableaux qui font référence aux mêmes données en mémoire
que le tableau d’origine, mais avec une configuration de pas (strides)
différente.
• Lorsque de nouvelles valeurs sont attribuées aux éléments d’une
vue, les valeurs du tableau d’origine sont donc également mises à
jour.
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 21 / 34
Calcul scientifique : numpy
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 22 / 34
Calcul scientifique : numpy
Lorsqu’une copie est nécessaire plutôt qu’une simple vue, la vue peut
être explicitement copiée en utilisant la méthode copy() du tableau
multidimensionnel (ndarray).
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 23 / 34
Calcul scientifique : numpy
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 24 / 34
Calcul scientifique : numpy
• Pour en savoir plus sur les techniques d’indexation, consultez la
documentation officielle de Numpy.
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 25 / 34
Calcul scientifique : numpy
Expressions vectorisées
• Le but d’utiliser les ndarray est de pouvoir traiter les données avec
des expressions vectorisées.
• L’utilisation des expressions vectorisées élimine le besoin de nom-
breuses boucles for explicites.
• Cela se traduit par un code moins verbeux, une meilleure mainte-
nabilité et des performances accrues.
• NumPy implémente des fonctions et des opérations vectorisées
correspondant à la plupart des fonctions mathématiques et des
opérateurs fondamentaux.
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 26 / 34
Calcul scientifique : numpy
Opérations arithmétiques
• Opérations réalisées élément par élément (elemntwise operations).
• A, B et C sont des ndarray.
• k est un scalaire.
Opérateur Opération Exemple
+, += Addition C = A + B, C = A+k
-,-= Soustraction C -= B, C = A-k
*, *= Multiplication C = A*B, C = A*k
/, /= Division C = A/B, C = A/k
//, //= Division entière C = A//B, C = A//k
**, **= Exponentiation C = A**B, C = A**k
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 27 / 34
Calcul scientifique : numpy
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 28 / 34
Calcul scientifique : numpy
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 29 / 34
Calcul scientifique : numpy
Autres fonctions
A.reshape(new_shape) : modifie le format d’un ndarray A en
utilisant un nouveau format new_shape, en gardant le même
nombre d’éléments. Le nombre d’éléments doit rester identique
entre A et sa nouvelle version résultante après modification.
np.transpose(A), A.transpose(), A.T : transposer le ndarray
A.
np.dot(A, B) : calcule et renvoie le produit matriciel (produit
scalaire) entre deux ndarray A et B représentant des matrices ou
des vecteurs.
np.cross(A, B) : calcule et renvoie le produit vectoriel entre deux
ndarray A et B représentant des vecteurs.
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 30 / 34
Calcul scientifique : numpy
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 30 / 34
Calcul scientifique : numpy
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 31 / 34
Calcul scientifique : numpy
Algèbre linéaire : np.linalg
np.linalg.det(A) : calcule le déterminant de A.
np.linalg.inv(A) : calcule la matrice inverse de A.
np.linalg.solve(A, b) : résout un système d’équations linéaires
Ax=b. Elle renvoie en résultat la solution x.
np.linalg.norm(A, ord) : calcule la norme d’un vecteur ou d’une
matrice A selon la norme spécifiée par le paramètre ord (ord =
np.inf, ord = 1, ord = 2).
np.linalg.eig(A) : calcule les valeurs propres et les vecteurs
propres de A. Elle renvoie un tuple (D,V) tel que : les colonnes de
V sont les vecteurs propres de A associés aux valeurs propres qui
apparaissent dans D.
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 32 / 34
Calcul scientifique : numpy
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 33 / 34
Calcul scientifique : numpy
• Résoudre le système d’équations linéaires suivant :
(
x0 + 2 · x1 = 1
3 · x0 + 5 · x1 = 2
• Écriture matricielle :
! ! !
1 2 x0 1
=
3 5 x1 2
Imane ARMAILI (CPGE EL KHANSAA - CASABLANCA Bibliothèque
/ MPSI) Numpy 2024 - 2025 34 / 34