NUMPY ET MATPLOTLIB
Calcul scientifique et tracé de graphiques en Python
Abahchouch Youness
CPGE Agadir — Lycée Reda Slaoui
Département d’informatique
abahchouch@[Link]
2026
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Plan
1 Introduction
2 NumPy : les tableaux
3 NumPy : indexation et opérations
4 Matplotlib : tracé de graphiques
5 Exercices
1/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Introduction
Dans ce cours, nous allons découvrir deux bibliothèques fondamentales en Python pour le
calcul scientifique :
NumPy (Numerical Python) — permet la manipulation efficace de grands volumes de
données numériques sous forme de tableaux multidimensionnels.
Matplotlib — permet d’afficher des graphiques : courbes, histogrammes, nuages de
points, etc.
Ces deux bibliothèques sont les fondations du calcul scientifique en Python et sont
utilisées massivement en mathématiques, physique, statistique et data science.
2/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
NumPy — Pourquoi ?
Python propose des listes : hétérogènes (mélange de types), de taille variable.
NumPy propose de vrais tableaux : homogènes (un seul type) et de taille fixe.
Avantages des tableaux NumPy
Manipulation beaucoup plus rapide que les listes Python.
Opérations vectorisées : on peut appliquer une opération à tout un tableau en une
seule ligne.
Nombreuses fonctions mathématiques optimisées.
Support natif des matrices et tableaux à n dimensions.
Note de vocabulaire : on utilisera le mot liste pour un objet de type list et le mot tableau
pour un objet de type ndarray (NumPy). 3/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Importer NumPy
Pour utiliser NumPy, on l’importe traditionnellement sous l’alias np :
import numpy as np
Toutes les fonctions NumPy seront alors préfixées par np., par exemple [Link](...),
[Link](...).
Remarque 1
L’alias np est une convention universelle dans la communauté Python. Tous les programmes
utilisant NumPy l’utilisent.
4/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Création d’un tableau — [Link]
La fonction [Link] transforme une liste en tableau :
import numpy as np
t = np . array ([1 , 2 , 3 , 4 , 5])
print ( t ) # [1 2 3 4 5]
print ( type (t ) ) # < class ' numpy . ndarray '>
print ( t . dtype ) # int64 ( type des elements )
print ( t . shape ) # (5 ,) ( forme du tableau )
print ( t . size ) # 5 ( nombre total d ' elements )
Attributs importants d’un tableau :
[Link] — forme (dimensions) du tableau, sous forme de tuple.
[Link] — nombre total d’éléments.
[Link] — type des éléments (int64, float64, etc.).
[Link] — nombre de dimensions.
5/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Tableaux multidimensionnels
Les tableaux peuvent avoir plusieurs dimensions. Pour créer une matrice, on passe une
liste de listes :
M = np . array ([[1 , 2 , 3] ,
[4 , 5 , 6]])
print ( M )
# [[1 2 3]
# [4 5 6]]
print ( M . shape ) # (2 , 3) -> 2 lignes , 3 colonnes
print ( M . ndim ) # 2 dimensions
print ( M . size ) # 6 elements au total
Remarque 2
Le shape d’une matrice est un tuple (nb_lignes, nb_colonnes). 6/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Tableaux spéciaux — zeros, ones
NumPy fournit des fonctions pour créer rapidement des tableaux particuliers :
np . zeros (5) # [0. 0. 0. 0. 0.] tableau de 0
np . ones (4) # [1. 1. 1. 1.] tableau de 1
np . zeros ((2 , 3) ) # matrice 2 x3 de zeros
np . ones ((3 , 3) ) # matrice 3 x3 de uns
np . eye (3) # matrice identite 3 x3
np . full ((2 , 2) , 7) # matrice 2 x2 remplie de 7
Exemple :
np . zeros ((2 , 3) )
# [[0. 0. 0.]
# [0. 0. 0.]]
7/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
La fonction [Link]
[Link] fonctionne comme la fonction range de Python, mais renvoie un tableau
NumPy :
[Link](debut, fin, pas)
np . arange (5) # [0 1 2 3 4]
np . arange (1 , 6) # [1 2 3 4 5]
np . arange (0 , 10 , 2) # [0 2 4 6 8]
np . arange (0 , 1 , 0.2) # [0. 0.2 0.4 0.6 0.8]
Remarque 3
Comme range, la borne inférieure est incluse et la borne supérieure est exclue. Mais
contrairement à range, le pas peut être un flottant.
8/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
La fonction [Link]
[Link] crée un tableau de n valeurs régulièrement espacées entre deux bornes :
[Link](debut, fin, n)
np . linspace (0 , 20 , 5) # [ 0. 5. 10. 15. 20.]
np . linspace (0 , 1 , 11) # [0. 0.1 0.2 0.3 ... 0.9 1.]
np . linspace ( -1 , 1 , 5) # [ -1. -0.5 0. 0.5 1.]
Remarque 4
Contrairement à arange, les deux bornes sont incluses. linspace est très utile pour générer des
points sur lesquels tracer des courbes.
9/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Indexation et slicing — Tableau 1D
L’accès aux éléments d’un tableau fonctionne comme pour les listes :
t = np . array ([10 , 20 , 30 , 40 , 50])
t [0] # 10 premier element
t [ -1] # 50 dernier element
t [1:4] # [20 30 40] de l ' indice 1 a 3 inclus
t [:3] # [10 20 30] les 3 premiers
t [2:] # [30 40 50] a partir de l ' indice 2
t [::2] # [10 30 50] un element sur deux
Remarque 5
Comme avec les listes Python, la borne inférieure est incluse et la borne supérieure exclue.
10/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Indexation et slicing — Tableau 2D
Pour un tableau 2D, on utilise deux indices séparés par une virgule [ligne, colonne] :
M = np . array ([[1 , 2 , 3] ,
[4 , 5 , 6] ,
[7 , 8 , 9]])
M [0 , 0] # 1 element en (0 , 0)
M [1 , 2] # 6 ligne 1 , colonne 2
M [0] # [1 2 3] premiere ligne complete
M [: , 1] # [2 5 8] deuxieme colonne complete
M [0:2 , 1:] # [[2 3] [5 6]] sous - matrice
Remarque 6
Le caractère : signifie toutes les valeurs. Ainsi M[:, 1] signifie toutes les lignes, colonne 1.
11/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Opérations vectorisées — La force de NumPy
NumPy permet d’appliquer une opération à tous les éléments d’un tableau en une seule
ligne, sans boucle :
t = np . array ([1 , 2 , 3 , 4 , 5])
t + 10 # [11 12 13 14 15] addition scalaire
t * 2 # [ 2 4 6 8 10] multiplication
t ** 2 # [ 1 4 9 16 25] puissance
1 / t # [1. 0.5 0.33 0.25 0.2]
Et entre deux tableaux de même forme, les opérations se font élément par élément :
a = np . array ([1 , 2 , 3])
b = np . array ([4 , 5 , 6])
a + b # [5 7 9]
a * b # [4 10 18] ( multiplication element par element ) 12/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Fonctions mathématiques universelles
NumPy fournit ses propres versions des fonctions mathématiques, qui s’appliquent à tout
un tableau d’un coup :
t = np . array ([0 , 1 , 2 , 3 , 4])
np . sqrt ( t ) # [0. 1. 1.41 1.73 2. ]
np . exp ( t ) # [1. 2.71 7.39 ...]
np . log ( t + 1) # [0. 0.69 1.09 1.38 1.60]
np . sin ( t ) # [0. 0.84 0.90 0.14 -0.75]
np . cos ( t ) # [1. 0.54 -0.41 -0.99 -0.65]
Important
Il faut utiliser [Link], [Link], [Link]... et non [Link] qui ne fonctionne que sur des
nombres seuls, pas sur des tableaux.
13/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Méthodes statistiques
NumPy fournit de nombreuses méthodes pour analyser un tableau :
t = np . array ([3 , 1 , 4 , 1 , 5 , 9 , 2 , 6])
t . sum () # 31 somme
t . min () # 1 minimum
t . max () # 9 maximum
t . mean () # 3.875 moyenne
t . std () # 2.66 ecart - type
len ( t ) # 8 nombre d ' elements
Remarque 7
Ces méthodes peuvent aussi s’écrire [Link](t), [Link](t), etc.
14/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Matplotlib — Présentation
Matplotlib est une bibliothèque de tracé de graphiques associée au langage Python et à
NumPy.
Elle permet de créer :
Des courbes (fonctions mathématiques, séries temporelles).
Des nuages de points.
Des histogrammes et diagrammes en barres.
Des graphiques en 3D, des cartes, etc.
Le sous-module qui nous intéresse est [Link], qu’on importe
traditionnellement sous l’alias plt.
15/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Importer Matplotlib
L’importation standard est la suivante :
import matplotlib . pyplot as plt
import numpy as np
On utilise donc le préfixe plt. pour appeler les fonctions de tracé.
Remarque 8
On importe quasiment toujours NumPy en même temps que Matplotlib, car on utilise des tableaux
NumPy pour générer les données à tracer.
16/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
La méthode [Link]() — Anatomie
Avant d’utiliser [Link](), comprenons comment elle fonctionne. Sa syntaxe de base
est :
[Link](x, y)
[Link] prend deux paramètres principaux :
x — un tableau (ou liste) contenant les abscisses des points à tracer.
y — un tableau (ou liste) contenant les ordonnées correspondantes.
Matplotlib relie ensuite ces points par des segments de droite pour former une courbe.
Plus on a de points, plus la courbe paraît lisse.
Remarque 9
x et y doivent avoir la même longueur, sinon Python lève une erreur. 17/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Premier tracé — Exemple
Traçons la fonction sin(x) sur [0, 2π ] :
import matplotlib . pyplot as plt
import numpy as np
# 100 points entre 0 et 2* pi
x = np . linspace (0 , 2* np . pi , 100)
y = np . sin ( x )
plt . plot (x , y ) # trace la courbe
plt . show () # affiche la
fenetre
Étapes essentielles :
1 Générer les abscisses x avec linspace.
2 Calculer les ordonnées y = f(x). 18/26
3 Appeler
Abahchouch Youness
[Link](x, y) pour tracer. CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
4 Appeler [Link]() pour afficher la fenêtre.
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Personnalisation — Titre, axes, grille
On peut enrichir le graphique avec un titre, des labels d’axes et une grille :
x = np . linspace (0 , 2* np . pi , 100)
y = np . sin ( x )
plt . plot (x , y )
plt . title ( " Fonction sinus " )
plt . xlabel ( " x " )
plt . ylabel ( " sin ( x ) " )
plt . grid ()
plt . show ()
Rôle de chaque méthode :
[Link]("...") — ajoute un titre au-dessus du graphique.
[Link]("...") — étiquette de l’axe horizontal. 19/26
[Link]("...") — étiquette de l’axe vertical.
[Link]() — affiche une grille en arrière-plan.
Abahchouch Youness
NumPy et Matplotlib
CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Personnalisation — Limites des axes
On peut aussi contrôler l’étendue des axes affichés :
plt . xlim (0 , 10) # limite l ' axe horizontal entre 0 et 10
plt . ylim ( -1 , 1) # limite l ' axe vertical entre -1 et 1
plt . axis ( " equal " ) # repere orthonorme ( meme echelle )
Rôle de chaque méthode :
[Link](a, b) — fixe les bornes minimale et maximale de l’axe horizontal.
[Link](a, b) — fixe les bornes de l’axe vertical.
[Link]("equal") — force un repère orthonormé (utile pour les figures
géométriques pour conserver les proportions).
20/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Changer la couleur d’une courbe
On peut personnaliser la couleur d’une courbe avec l’argument color de [Link] :
x = np . linspace (0 , 2* np . pi , 100)
y = np . sin ( x )
plt . plot (x , y , color = ' red ')
plt . title ( " Courbe en rouge " )
plt . grid ()
plt . show ()
Couleurs courantes :
'red', 'blue', 'green', 'black', 'orange', 'purple', 'yellow', 'pink', 'gray'... 21/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Tracer plusieurs courbes — Légende
Pour superposer plusieurs courbes, on appelle [Link] plusieurs fois :
x = np . linspace (0 , 2* np . pi , 100)
plt . plot (x , np . sin ( x ) ,
color = ' blue ' , label = ' sin ( x ) ')
plt . plot (x , np . cos ( x ) ,
color = ' red ' , label = ' cos ( x ) ')
plt . title ( " Sinus et Cosinus " )
plt . xlabel ( " x " )
plt . ylabel ( " y " )
plt . legend ()
plt . grid ()
plt . show ()
Comment fonctionne la légende : 22/26
L’argument label='...' de [Link] attribue un nom à chaque courbe.
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
[Link]() affiche ensuite ces noms dans un cadre sur le graphique.
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Nuage de points — [Link]
[Link](x, y) affiche les points sans les relier :
import numpy as np
import matplotlib . pyplot as plt
# 50 points aleatoires
x = np . random . randn (50)
y = np . random . randn (50)
plt . scatter (x , y , color = ' purple ')
plt . title ( " Nuage de points " )
plt . grid ()
plt . show ()
Rôle : [Link] est utile pour visualiser la relation entre deux variables, par exemple
en statistiques pour repérer des corrélations. 23/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Exemple complet
Tracer les fonctions f (x) = x2 et g(x) = x3 sur [−2, 2] :
import numpy as np
import matplotlib . pyplot as plt
x = np . linspace ( -2 , 2 , 200)
f = x **2
g = x **3
plt . plot (x , f , color = ' blue ' , label = '
$x ^2 $ ')
plt . plot (x , g , color = ' red ' , label = ' $x
^3 $ ')
plt . title ( " Fonctions puissances " )
plt . xlabel ( " x " )
plt . ylabel ( " y " )
plt . legend () 24/26
plt . grid ()
plt . show ()
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Exercices
1 Créer un tableau NumPy contenant les 20 premiers entiers pairs.
2 Soit t = [Link](1, 11). Calculer (sans boucle) :
la somme des éléments de t,
le tableau des carrés de t,
la moyenne de t.
2
3 Tracer la fonction f (x) = e−x sur l’intervalle [−3, 3] avec un titre, des labels d’axes et
une grille.
4 Tracer sur le même graphique les fonctions sin(x), cos(x) et sin(x) + cos(x) sur
[0, 2π ], avec une légende.
25/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib
Introduction NumPy : les tableaux NumPy : indexation et opérations Matplotlib : tracé de graphiques Exercices
Fin !
26/26
Abahchouch Youness CPGE Agadir — Lycée Reda Slaoui Département d’informatique abahchouch@[Link]
NumPy et Matplotlib