Vous êtes sur la page 1sur 17

Chapitre 2 : Bibliothèques standards de Python

Responsable : Dr Ousmane KHOUMA

Année Académique 2021 - 2022

Université Amadou Mahtar MBOW (UAM)


Licence 2 Écoles Suprérieure des Sciences et Techniques de l’Ingénieur (ESTI)

1 Introduction
Une des grandes forces de Python réside dans le nombre important de bibliothèques standards
externes. Une bibliothèque est un ensemble de fonctions. Celles-ci sont regroupées et mises à
disposition afin de pouvoir être utilisées sans avoir à les réécrire.
De ce fait, les capacités du langage Python sont étendues dans de nombreux domaines : nouveaux
types de données, interactions avec le système, gestion des fichiers et des processus, multimédia,
etc.
Dans ce cours, nous allons découvrir les bibliothèques Numpy, Scipy et Matplotlib.

2 La bibliothèque Numpy
L’utilisation de listes imbriquées en tant que matrice fonctionne pour des tâches de calcul simples.
Cependant, il existe un meilleur moyen de travailler avec des matrices en Python à l’aide de la
bibliothéque NumPy.
NumPy est un package pour le calcul scientifique qui prend en charge un puissant ob-
jet tableau à N dimensions. Pour la documentation officielle, merci d’utiliser ce lien :
https://numpy.org/doc/

2.1 Création d’une matrice ou d’un tableau Numpy


La syntaxe suivante permet de créer une matrice :

import numpy as np # importation de la bibliothèque de Numpy.


a = np.array ([ligne1, ligne2, ligne3,...])

L’exemple suivant nous donne quelques cas de création de matrice :

import numpy as np
A = np.array([[1, 2, 3],[7, 4, 5]]) # tableau d'entiers
print("A : " , A)

1
Licence 2 ESTI Université Amadou Mahtar MBOW

B = np.array([[1.1, 2, 3], [7, 4, 5]]) # tableau de réels


print("B : ", B)

C = np.array([[1, 2, 3], [7, 4, 5]], dtype = complex) # Tableau de complexes


print("C : ", C)
print("La taille de la matrice A est :\n",np.shape(A))

A : [[1 2 3] [7 4 5]]
B : [[1.1 2. 3. ] [7. 4. 5. ]]
C : [[1.+0.j 2.+0.j 3.+0.j] [7.+0.j 4.+0.j 5.+0.j]]
La taille de la matrice A est : (2, 3)

2.2 Autres méthodes de création de matrice


2.2.1 La méthode arange()
La méthode arange() permet de créer une matrice dont les éléments sont uniformément répartis
sur un intervalle défini par [début , fin] avec le pas choisi.
La syntaxe est la suivante :

np.arange(début, fin, pas , dtype=None) # dtype est le type choisi

import numpy as np
x = np.arange(1 , 10 , 3 , int)
print(x)

[1 4 7]
NB : La méthode arange() peut avoir un seul paramètre.

import numpy as np
A = np.arange(6)
print("A : " , A)

A : [0 1 2 3 4 5]

2.2.2 La méthode reshape()


La méthode reshape() est utilisée pour modifier la forme d’une matrice en changeant le nombre
de ligne et le nombre de colonnes. Elle prend comme paramètres, le nombre de lignes et le nombre
de colonnes.

import numpy as np
A = np.arange(6)
print("A : ", A)
B = A.reshape(2,3)
print("B : ", B)

Dr Ousmane KHOUMA 2 Année Académique 2020 - 2021


Licence 2 ESTI Université Amadou Mahtar MBOW

A : [0 1 2 3 4 5]
B : [[0 1 2] [3 4 5]]

2.2.3 La méthode linspace()


La méthode linspace() créer des tableaux (matrices) avec un nombre spécifié d’éléments et espacés
de manière égale entre les valeurs de début et de fin spécifiées.

import numpy as np
m = np.linspace (0,10,3) # Les paramètres : début, fin, nombre d'éléments.
print(m)

[ 0. 5. 10.]

2.3 Les matrices particulières


2.3.1 Matrice unitaire
La matrice unitaire ou identité est créée à l’aide de la méthode eye.

import numpy as np
unitaire = np.eye(4)
print(unitaire)

[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]

2.3.2 Matrice remplie de uns (1)


Pour remplir une matrice remplie de uns, on utilise la méthode ones.

import numpy as np
A = np.zeros( (2, 4) ) # matrice de zéros
print("A : " , A)
B = np.ones( (4, 2) )# matrice de uns
print("B : ", B)

A : [[0. 0. 0. 0.] [0. 0. 0. 0.]]


B : [[1. 1.] [1. 1.] [1. 1.] [1. 1.]]

2.4 Opérations sur les matrices


2.4.1 Addition terme à terme
Nous utilisons l’opérateur + pour faire l’addition terme à terme de deux matrices.

Dr Ousmane KHOUMA 3 Année Académique 2020 - 2021


Licence 2 ESTI Université Amadou Mahtar MBOW

import numpy as np
A = np.array([ [4, 1, 7], [9, 8, -1], [10, 12, 2] ])
B = np.array([ [8, -1, 8], [2, 1, 4], [18, 2, 30] ])
C= A + B
print("A : ", A)
print("B : ", B)
print("A + B : ", C)

A : [[ 4 1 7] [ 9 8 -1] [10 12 2]]


B : [[ 8 -1 8] [ 2 1 4] [18 2 30]]
A + B : [[12 0 15] [11 9 3] [28 14 32]]

2.4.2 Produit terme à terme


Le produit terme à terme de deux matrice est donné par l’exemple suivant :

import numpy as np
a = np.array ([[4, 6], [2, 3]])
b = np.array ([[1, 3], [7, 3]])
print(a*b)

Le produit est : [[ 4 18] [14 9]]

2.4.3 Produit matriciel


Pour multiplier deux matrices, nous utilisons la méthode dot().

import numpy as np

A = np.array([ [3, 1, 5], [9, 8, -1], [10, 12, 2] ])


B = np.array([ [8, -1, 8], [2, 1, 3], [18, 2, 32] ])

C = A.dot(B)

print("A : ", A)
print("B : ", B)
print("A * B : ", C)

A : [[ 3 1 5] [ 9 8 -1] [10 12 2]]


B : [[ 8 -1 8] [ 2 1 3] [18 2 32]]
A * B : [[116 8 187] [ 70 -3 64] [140 6 180]]

2.4.4 Transposée d’une matrice


La méthode transpose() permet de déterminer la transposition d’une matrice.

import numpy as np
A = np.array([ [3, 1, 5], [9, 8, -1], [10, 12, 2] ])

Dr Ousmane KHOUMA 4 Année Académique 2020 - 2021


Licence 2 ESTI Université Amadou Mahtar MBOW

C = A.transpose()
print("A : ", A)
print("Transposée de A : ", C)

A : [[ 3 1 5] [ 9 8 -1] [10 12 2]]


Transposée de A : [[ 3 9 10] [ 1 8 12] [ 5 -1 2]]
Il y aussi une autre manière de détermination de la transposition d’une matrice.

import numpy as np
A = np.array([ [3, 1, 5], [9, 8, -1], [10, 12, 2] ])
C=A.T
print("A : ", A)
print("Transposée de A : ", C)

A : [[ 3 1 5] [ 9 8 -1] [10 12 2]]


Transposée de A : [[ 3 9 10] [ 1 8 12] [ 5 -1 2]]

2.4.5 Accès aux éléments de la matrice, aux lignes et aux colonnes


Accès aux éléments de la matrice :

Comme pour les listes, nous pouvons accéder aux éléments de la matrice à l’aide d’indice.

# Matrice à une dimension


import numpy as np
A = np.array([2, 4, 6, 8, 10])
print("A[0] =", A[0]) # 1èr élément
print("A[2] =", A[2]) # 3ème élément
print("A[-1] =", A[-1]) # dernier élément

A[0] = 2
A[2] = 6
A[-1] = 10

# Matrice à une dimension


import numpy as np
A = np.array([[1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]])
# Premier élément de la première ligne
print("A[0][0] =", A[0][0])
# Troisième élément de la deuxième ligne
print("A[1][2] =", A[1][2])
# Dernier élément de la dernière ligne
print("A[-1][-1] =", A[-1][-1])

A[0][0] = 1
A[1][2] = 9
A[-1][-1] = 19

Dr Ousmane KHOUMA 5 Année Académique 2020 - 2021


Licence 2 ESTI Université Amadou Mahtar MBOW

Accès aux lignes d’une matrice :

L’accès aux lignes d’une matrice est donné par l’exemple suivant :

import numpy as np
A = np.array([ [1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19] ])
print("A[0] =", A[0]) # Première ligne
print("A[2] =", A[2]) # Troisième ligne
print("A[-1] =", A[-1]) # Dernière ligne

A[0] = [ 1 4 5 12]
A[2] = [-6 7 11 19]
A[-1] = [-6 7 11 19]

Accès aux colonnes d’une matrice :

import numpy as np
A = np.array([ [1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19] ])
print("A[:,0] =",A[:,0]) # Première colonne
print("A[:,3] =", A[:,2]) # Quatrième colonne
print("A[:,-1] =", A[:,-1]) # Dernière colonne

A[:,0] = [ 1 -5 -6]
A[:,3] = [ 5 9 11]
A[:,-1] = [12 0 19]

2.4.6 Découpage d’une matrice


Vous allez voir dans cette partie quelques opérations permettant d’extraire une ou des parties dans
un tableau (matrice) Numpy.

import numpy as np
A = np.array([1, 3, 5, 7, 9, 7, 5])
# 3ème à 5ème éléments
print("A[2:5] : ", A[2:5])
# 1er au 4ème élément
print("A[:-5] : ", A[:-5])
# 6ème au dernier élément
print("A[5:] : ", A[5:])
# 1er au dernier élément
print("A[:] : ", A[:])
# inverser une liste
print("A[::-1] : ", A[::-1])

A[2:5] : [5 7 9]
A[:-5] : [1 3]
A[5:] : [7 5]

Dr Ousmane KHOUMA 6 Année Académique 2020 - 2021


Licence 2 ESTI Université Amadou Mahtar MBOW

A[:] : [1 3 5 7 9 7 5]
A[::-1] : [5 7 9 7 5 3 1]
Le découpage d’une matrice peut se faire sous plusieurs formes.
L’exemple ci-dessous donne quelques méthodes de découpage d’une matrice.

import numpy as np
A = np.array([[1, 4, 5, 12, 14], [-5, 8, 9, 0, 17],[-6, 7, 11, 19, 21]])

print("A[:2, :4] : ", A[:2, :4]) # deux lignes, quatre colonnes


print("A[:1,] : ", A[:1,]) # première ligne, toutes les colonnes
print("A[:,2] : ", A[:,2]) # toutes les lignes, deuxième colonne
print("A[:, 2:5] : ", A[:, 2:5]) # toutes les lignes, troisième à cinquième␣
,→colonne

A[:2, :4] : [[ 1 4 5 12]


[-5 8 9 0]]
A[:1,] : [[ 1 4 5 12 14]]
A[:,2] : [ 5 9 11]
A[:, 2:5] : [[ 5 12 14]
[ 9 0 17]
[11 19 21]]
NB : Il est conseillé d’utiliser Numpy à la place des listes imbriquées pour la manipulation des
tableaux.

3 La bibliothèque Scipy
Scipy est une bibliothèque qui fournit une manipulation des tableaux à N dimensions pratique et
rapide. Elle dépend Numpy.
Pour la documentation officielle, merci d’utiliser ce lien :
https://docs.scipy.org/doc/scipy/reference/tutorial/
Nous allons voir quelques méthodes de cette bibliothèque.

3.1 Déterminant d’une matrice avec scipy


La méthode det() permet de calculer le déterminant d’une matrice carrée.

import numpy as np
from scipy import linalg
a = np.array([[1, 2],[3, 4]])
d = linalg.det(a)
print("Le déterminant de la matrice est : ",d)

Le déterminant de la matrice est : -2.0

Dr Ousmane KHOUMA 7 Année Académique 2020 - 2021


Licence 2 ESTI Université Amadou Mahtar MBOW

3.2 Inverse d’une matrice avec Scipy


L’inverse d’une matrice A noté B doit vérifier la relation AB = I (I est la matrice identité) avec
B = A −1 .

import numpy as np
from scipy import linalg
A = np.array([[1, 3, 3],
[1, 4, 3],
[1, 3, 4]])
B = linalg.inv(A)
print("L'inverse de la matrice est ",B)
print("Le produit de la matrice et son",
"inverse est : \n", A.dot(B))

L'inverse de la matrice est [[ 7. -3. -3.] [-1. 1. -0.] [-1. 0. 1.]]


Le produit de la matrice et son inverse est :
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]

3.3 Résolution d’un système d’équations linéaires


La résolution du système d’équations linéaires 3 * x0 + x1 = 9 et x0 + 2 * x1 = 8 est donnée par :

import numpy as np
from scipy import linalg
a = np.array([[3,1], [1,2]])
b = np.array([9,8])
x = linalg.solve(a,b)
print("La solution du système linéaire est :\n", x)

La solution du système linéaire est :


[2. 3.]

3.4 Valeurs propres et vecteurs propres


La méthode eig() permet de calculer les valeurs propres et les vecteurs propres.

from scipy.linalg import eig


A = np.array([[ 1, 1, -2 ], [-1, 2, 1], [0, 1, -1]])
D, V = eig(A)
print("Les valeurs propres de la matrice est :\n", D)
print("Les vecteurs propres de la matrice est :\n", V)

Les valeurs propres de la matrice est :


[ 2.+0.j 1.+0.j -1.+0.j]
Les vecteurs propres de la matrice est :
[[ 3.01511345e-01 -8.01783726e-01 7.07106781e-01]

Dr Ousmane KHOUMA 8 Année Académique 2020 - 2021


Licence 2 ESTI Université Amadou Mahtar MBOW

[ 9.04534034e-01 -5.34522484e-01 -1.92296269e-16]


[ 3.01511345e-01 -2.67261242e-01 7.07106781e-01]]

from numpy.linalg import eig # On peut aussi utiliser la bibliothèque Numpy


A = np.array([[ 1, 1, -2 ], [-1, 2, 1], [0, 1, -1]])
D, V = eig(A)
print("Les valeurs propres de la matrice est :\n", D)
print("Les vecteurs propres de la matrice est :\n", V)

Les valeurs propres de la matrice est :


[ 2. 1. -1.]
Les vecteurs propres de la matrice est :
[[ 3.01511345e-01 -8.01783726e-01 7.07106781e-01]
[ 9.04534034e-01 -5.34522484e-01 -1.92296269e-16]
[ 3.01511345e-01 -2.67261242e-01 7.07106781e-01]]

4 La bibliothèque Matplotlib
Pour tracer des courbes, des diagramme, Python n’est pas suffisant et nous avons besoin des
bibliothèques NumPy et matplotlib utilisées dans ce cours.
Pour la documentation officielle, merci d’utiliser ce lien : https://matplotlib.org/.

4.1 Création d’une courbe


4.1.1 Utilisation de plot()
Avant le traçage des courbes, il faut importer le package numpy et le module pyplot de mat-
plotlib.
L’exemple ci-dessous donne un cas traçage de courbe.

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 3, 4, 6])
y = np.array([2, 3, 5, 1])
plt.plot(x,y)

plt.show() # Affiche la figure à l'écran

Dr Ousmane KHOUMA 9 Année Académique 2020 - 2021


Licence 2 ESTI Université Amadou Mahtar MBOW

On peut aussi dessiner une fonction cosinus entre 0 et 10π en utilisant 200 points.

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10*np.pi, 200)
y = np.cos(x)
plt.plot(x,y)
plt.show() # Affiche la figure à l'écran

Dr Ousmane KHOUMA 10 Année Académique 2020 - 2021


Licence 2 ESTI Université Amadou Mahtar MBOW

4.1.2 Définition du domaine des axes - xlim() et ylim().


Les fonctions xlim() et ylim() permettent de fixer les limites de la fenêtre d’affichage sur les axes
(abscisses et ordonnées).

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10*np.pi, 200)


y = np.cos(x)

plt.plot(x, y)
plt.xlim(0, 10) # délimite la fenêtre sur l'axe des abscisses
plt.ylim(-1.5, 1.5) # délimite la fenêtre sur l'axe des ordonnées

plt.show() # Affiche la figure à l'écran

4.1.3 Ajout de titre, de légende et de labels sur les axes.


Les titre et légende sont ajoutés respectivement grâce aux fonctions title() et legend().
Pour ajouter des labels sur les axes, on utilise les fonctions xlabel() et ylabel().

Dr Ousmane KHOUMA 11 Année Académique 2020 - 2021


Licence 2 ESTI Université Amadou Mahtar MBOW

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10*np.pi, 200)


y = np.cos(x)

plt.plot(x, y, label="cos(x)")
plt.title("Fonction cosinus") # Titre de la figure
plt.legend() # Affichage de la légende

plt.xlabel("Temps(seconde)") # Label sur l'axe des abscisses


plt.ylabel("Amplitude") # Label sur l'axe des ordonnées

plt.show() # Affiche la figure à l'écran

4.2 Affichage de plusieurs courbes


4.2.1 Affichage dans une même zone
L’exemple ci-dessous nous donne le traçage des fonctions sinus et cosinus dans une même zone.

Dr Ousmane KHOUMA 12 Année Académique 2020 - 2021


Licence 2 ESTI Université Amadou Mahtar MBOW

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,5*np.pi,200)
y1 = np.cos(x)
y2 = np.sin(x)
plt.plot(x, y1, label="cos(x)")
plt.plot(x, y2, label="sin(x)")
plt.legend()
plt.grid() # Affichage une grille dans la fenêtre.
plt.show()

4.2.2 Affichage de plusieurs tracés dans la même figure


La fonction subplot() permet d’organiser différents tracés à l’intérieur d’une grille d’affichage. Il
faut spécifier le nombre de lignes, le nombre de colonnes ainsi que le numéro (position) du tracé.

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,5*np.pi,200)
y1 = np.cos(x)
y2 = np.sin(x)
plt.subplot(211) subplot(nbre_de_ligne,nbre_de_colonne,position)
plt.title("Fonctions sinusoidales") # Titre de la figure
plt.plot(x, y1, label="cos(x)")
plt.legend()
plt.grid()
plt.subplot(212)

Dr Ousmane KHOUMA 13 Année Académique 2020 - 2021


Licence 2 ESTI Université Amadou Mahtar MBOW

plt.plot(x, y2, label="sin(x)")


plt.legend()
plt.grid() # Affichage une grille dans la fenêtre.
plt.show()

4.2.3 Formats de courbes


Il est aussi possible préciser la couleur de la courbe.

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,5*np.pi,40)
y1 = np.cos(x)
y2 = np.sin(x)
plt.subplot(211)
plt.title("Fonctions sinusoidales") # Titre de la figure
plt.plot(x, y1,"r--", label="cos(x)")
plt.legend()
plt.grid()
plt.subplot(212)
plt.plot(x, y2,"b:o", label="sin(x)")
plt.legend()
plt.grid() # Affichage une grille dans la fenêtre.
plt.show()

Dr Ousmane KHOUMA 14 Année Académique 2020 - 2021


Licence 2 ESTI Université Amadou Mahtar MBOW

Je vous conseille de consulter les liens ci-dessous :


• La version française du tutoriel Matplotlib de Nicolas P. Rougier avec des exemples dans le
mode PyLab : https://python.developpez.com/tutoriels/graphique-2d/matplotlib/
• Le tutoriel Matplotlib de Nicolas P. Rougier (en anglais) :
https://www.labri.fr/perso/nrougier/teaching/matplotlib/

4.3 Graphiques à barres


Les graphiques en barre peut être retracés facilement à partir de données telles que des séries
statistiques.

import matplotlib.pyplot as plt


import numpy as np
x = [1,2,3,4,5]
y = [8,3,11,9,6]
largeur = 0.5
plt.bar(x, y, largeur, label='serie statistique')
plt.legend()
plt.show()

Dr Ousmane KHOUMA 15 Année Académique 2020 - 2021


Licence 2 ESTI Université Amadou Mahtar MBOW

Cet exemple montre comment créer un graphique à barres groupé et comment annoter des barres
avec des étiquettes.

4.4 Digramme circulaire


Nous allons tracer un diagramme circulaire où les tranches seront ordonnées et tracées dans le
sens inverse des aiguilles d’une montre.

import matplotlib.pyplot as plt

labels = 'Mangue', 'Banane', 'Orange', 'Poire'


serie = [15, 30, 45, 10]
separation = (0, 0, 0, 0) # Séparation des tranches

fig, ax = plt.subplots()
ax.pie(serie, explode=separation, labels=labels, autopct='%1.0f%%',
shadow=True, startangle=90)
ax.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle.
plt.show()

Dr Ousmane KHOUMA 16 Année Académique 2020 - 2021


Licence 2 ESTI Université Amadou Mahtar MBOW

4.5 Affichage d’un nuage de points


La fonction scatter() permet de dessiner des points dans le plan.

import matplotlib.pyplot as plt


import numpy as np
x = [1, 2, 3, 4, 5, 6] ; y = [3, 2.5, 3.5, 3, 2, 4]
plt.title("Nuage de points") # Titre de la figure
plt.scatter(x, y) ; plt.show()

Dr Ousmane KHOUMA 17 Année Académique 2020 - 2021

Vous aimerez peut-être aussi