Contenu du chapitre
1 - À propos de la bibliothèque numpy
1.1 - Qu'est-ce que numpy?
1.2 Comment installer numpy?
2. Matrice ou tableau avec numpy
2.1 Syntaxe de création d'une matrice avec numpy
2.2 Produit terme à terme
2.3 Produit matriciel
2.4 Transposition d'une matrice
2.5 Matrice unitaire
2.6 Créer une matrice en subdivisant un intervalle
2.7 Créer une matrice numpy avec la méthode arrange()
2.8 Obtenir le type d'une matrice numpy avec la méthode shape()
2.9 Ajouter des lignes et des colonnes à une matrice numpy
2.10 Modifier la forme d'une matrice avec la méthode reshape()
2.11 Concaténation de deux matrices avec la méthode concatenate()
2.12 Action d'une fonction mathématique sur un tableau
2.13 Produit scalaire de deux vecteurs
2.14 Exporter un tableau vers un fichier texte ou un fichier Numpy .npy
3. La sous-bibliothèque linalg pour l'algèbre linéaire
3.1 Calcul du rang d'une matrice avec numpy
3.2 Calcul du déterminant d'une matrice avec numpy
3.4 résolution d'un système linéaire avec linalg
3.5 Les valeurs propres de la matrice avec linalg numpy
3.6 Calcul des valeurs et vecteurs propres en même temps avec la méthode eig()
3.7 Calcul du polynôme caractéristique d'une matrice avec numpy
1 - À propos de la bibliothèque numpy
1.1 - Qu'est-ce que numpy?
NumPy est une bibliothèque attachée au langage Python, ajoutant la prise en charge des tableaux et matrices multidimensionnelles, ainsi qu'une grande collection de fonctions mathématiques de haut niveau pour opérer sur ces matrices. NumPy est un logiciel open source et compte de nombreux contributeurs, crée spécialement pour le calcul scientifique, notamment le calcul matriciel, tout en offrant de multiples fonctions permettant la création et la manipulation de matrices, vecteurs, etc ... Pour plus de détails voir la documentation officielle : https://numpy.org/doc/
1.2 Comment installer numpy?
La bibliothèque numpy s'installe facilement à l'aide de l'utilitaire pip, il suffit de lancer l'invite de commande cmd et de taper:
1 2 3 |
pip install numpy |
2. Matrice ou tableau avec numpy
2.1 Syntaxe de création d'une matrice avec numpy
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import numpy as np a = np.array ([ligne1, ligne2, ligne3]) Exemple: matrice à 2 lignes et 3 colonnes 2x3 import numpy as np a = np.array ([[12,7,5], [8,5,4]]) print(a) """ Ce qui affiche à l'exécution: [[12 7 5] [8 5 4]] """ |
2.2 Produit terme à terme
1 2 3 4 5 6 7 8 9 10 11 |
import numpy as np a = np.array ([[5, 3], [2, 3]]) b = np.array ([[1, 3], [7, 3]]) print(a * b) """ La sortie est la suivante: [[5 9] [14 9]] """ |
2.3 Produit matriciel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import numpy as np a = np.array ([[5, 3], [2, 3]]) b = np.array ([[1, 3], [1, 3]]) produit = np.dot (a, b) print(produit) """ La sortie est la suivante: [[8 24] [5 15]] """ |
2.4 Transposition d'une matrice
1 2 3 4 5 6 7 8 9 10 |
import numpy as np a = np.array ([[5, 3], [2, 3]]) print(a.T) """ La sortie est: [[5 2] [3 3]] """ |
2.5 Matrice unitaire
1 2 3 4 5 6 7 8 9 10 11 |
import numpy as np a = np.eye (3) print(a) """ La sortie est: [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]] """ |
2.6 Créer une matrice en subdivisant un intervalle
La méthode linspace() de la bibliothèque numpy renvoie un tableau unidimensionnel d'une valeur de début à une valeur de fin après une étape donnée.
Syntaxe
1 2 3 |
numpy.linspace() |
Exemple
1 2 3 4 5 6 7 |
import numpy as np m = np.linspace (0, 20, 5) print("La matrice obtenue à partir de l'intervalle [0 , 20] est:", m) # La sortie est: # La matrice obtenue à l'étape 5 est: [0. 5. 10. 15. 15. 20.] |
2.7 Créer une matrice numpy avec la méthode arange()
La méthode arange() renvoie une matrice dont les valeurs uniformément réparties sur l'intervalle [début , fin] avec le pas choisi.
Syntaxe
1 2 3 |
np.arange( début, fin, pas , dtype=None) |
- début : valeur de début (facultatif)
- fin : valeur de fin
- pas : saut entre chaque valeur (par défaut 1 s'il n'est pas précisé !)
- dtype : type choisi
Remarque
La valeur fin n'est pas atteinte !
Exemple : matrices formées de nombres entiers
1 2 3 4 5 6 7 8 9 10 11 |
import numpy as np a = np.arange(5 , 20 , 3 , int) print(a) # renvoie une matrice d'entiers : [ 5 8 11 14 17] Exemple : matrice formée de nombres réels import numpy as np a = np.arange(0 , 1 , 0.1 , float) print(a) # renvoie la matrice formée de nombres réels : [0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9] |
2.8 Obtenir le type d'une matrice numpy avec la méthode shape()
La méthode shape() renvoie le type d'une matrice numpy, elle permet donc de déterminer le nombre de lignes et le nombre de colonnes de la matrice.
Exemple
1 2 3 4 5 6 7 8 9 10 |
import numpy as np array = np.array([[11,2,7],[3,5,1]]) # obtenir le nombre de lignes et le nombre de colonnes rows, columns = array.shape print("Le type est : " ,rows , "x" , columns)# affiche: Le type est : 2 x 3 |
2.9 Ajouter des lignes et des colonnes à une matrice numpy
Pour ajouter une ligne à une matrice numpy, plusieurs méthodes peuvent être utilisées:
- numpy.r_()
- numpy.vstack()
- numpy.append()
- numpy.insert()
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import numpy as np A = np.array([[11, 3 , 7] , [4 , 3 , 5] ]) row = [1,1,1] A = np.r_[A , [row] ] print(A) """ affiche: [[11 3 7] [ 4 3 5] [ 1 1 1]] """ |
Pour ajouter une colonne à une matrice numpy, nous pouvons utiliser la méthode numpy.append() qui prends comme paramètres:
- La matrice initiale
- la colonne à ajouter
- la valeur de l'axis
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import numpy as np A = np.array([[11, 3] , [8 , 4], [4 , 3] ]) column = [[0] , [0] , [0]] A = np.append(A , column , axis=1) print(A) """ affiche: [[11 3 0] [ 8 4 0] [ 4 3 0]] """ |
2.10 Modifier la forme d'une matrice avec la méthode reshape()
La méthode reshape() a pour effet de modifier la forme d'une matrice en changeant le nombre de ligne et le nombre de colonnes. Il suffit pour cela de préciser le nombre des lignes et de colonnes en paramètres:
Exemple
1 2 3 4 5 6 7 8 9 10 |
# coding: utf-8 import numpy as np a = np.arange(0 , 11, 2 , int).reshape(2 , 3) b = a.reshape(3 , 2) print(a) print(b) # print(a) renvoie la matrice formée de nombres entiers : [[ 0 2 4] [ 6 8 10]] # print(b) renvoie la matrice formée de nombres entiers : [[ 0 2] [ 4 6] [ 8 10]] |
2.11 Concaténation de deux matrices avec la méthode concatenate()
La méthode concatenate() est utilisée pour concaténer deux matrices :
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 |
# coding: utf-8 import numpy as np a = np.array([1, 2]) b = np.array([3, 4, 5]) # concaténation de a et b c = np.concatenate((a, b)) print("La matrice obtenue en concaténant a et b est : c = " , c) # La matrice obtenue en concaténant a et b est : c = [1 2 3 4 5] |
2.12 Action d'une fonction mathématique sur un tableau
NumPy possède un grand nombre de fonctions mathématiques qui peuvent être appliquées directement à un tableau. Dans ce cas, la fonction est appliquée à chacun des éléments du tableau.
Exemple
1 2 3 4 5 6 7 |
import numpy as np x = np.linspace (0, 3,4) y = np.exp (x) print(y) # La sortie est: [1. 2.71828183 7.3890561 20.08553692] |
2.13 Produit scalaire de deux vecteurs
Le produit scalaire de deux vecteurs peut être déterminer et calculer facilement avec la méthode dot():
Exemple
1 2 3 4 5 6 7 8 9 |
import numpy as np a = np.array([4,2,3], float) b = np.array([2,3,1], float) prodScalaire = np.dot(a,b) print("le produit scalaire est a.b = " , prodScalaire) # affiche: le produit scalaire est a.b = 17.0 |
Le produit scalaire peut être calculer aussi avec la méthode vdot() si les vecteurs sont définis sous forme de matrices colonnes
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import numpy as np a = np.array([[4], [2], [3]]) b = np.array([[2] , [3] , [1]]) prodScalaire = np.vdot(a.T,b) print("le produit scalaire est a.b = " , prodScalaire) # affiche: le produit scalaire est a.b = 17.0 |
2.14 Exporter un tableau vers un fichier texte ou un fichier Numpy .npy
Parfois on a besoins d'exporter et d'enregistrer les données matricielles sous forme d'un fichier texte ou .npy et ce dont le but d'échanger les données avec d'autre bibliothèques et scripts. A cet effet la bibliothèque Numpy nous offre la méthode save() qui réalise en toute aisance cette opération.
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 |
# coding: utf-8 import numpy as np a = np.array([[5 , 11] , [4 , 7]] ) # enregistrer le tableau a sur un fichier texte .txt np.savetxt("matrice.txt" , a ) # # enregistrer le tableau a sur un fichier Numpy .npy np.save("matrice.npy" , a) |
3. La sous-bibliothèque linalg pour l'algèbre linéaire
3.1 Calcul du rang d'une matrice avec numpy
Pour calculer le rang d'une matrice avec numpy, il suffit d'utiliser la méthode matrix_rank() de la bibliothèque linalg:
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mport numpy as np a = np.array([[1 , 2 , 3] , [3 , 2 , 1], [1 , 2 , 1]] ) b = np.array([[1 , 2 , 3] , [3 , 2 , 1], [2 , 0 , -2]] ) r1 = np.linalg.matrix_rank(a) r2 = np.linalg.matrix_rank(b) print("rang(a) = " , r1) # affiche: rang(a) = 3 print("rang(b) = " , r2) # affiche: rang(b) = 2 |
3.2 Calcul du déterminant d'une matrice avec numpy
Pour calculer le déterminant d'une matrice avec numpy, rien de plus simple, il suffit d'utiliser la méthode det() de la bibliothèque linalg:
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import numpy as np a = np.array([[2 , 3] , [1 , 2]] ) b = np.array([[2 , -1] , [-4 , 2]] ) det_a = np.linalg.det(a) det_b = np.linalg.det(b) print("det(a) = " , det_a) # affiche det(a) = 1.0 print("det(b) = " , det_b) # affiche det(b) = 0.0 |
3.3 Inverse d'une matrice avec linalg numpy
Pour inverser une matrice avec numpy, nous utilisons la bibliothèque d'algèbre linéaire linalg . Pour plus de détails sur cette bibliothèque, consultez la documentation officielle: https://docs.scipy.org/doc/numpy/reference/routines.linalg.html
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import numpy as np a = np.array ([[2, 1], [5, 3]]) b = np.linalg.inv (a) print ("L'inverse matriciel de a est:", b) """ La sortie est: L'inverse matriciel de a est: [[3. -1.] [-5. 2.]] """ |
3.4 résolution d'un système linéaire avec linalg
Pour résoudre un système linéaire avec la bibliothèque linalg, il suffit d'appliquer la méthode solve() pourvue que la matrice du système linéaire soit inversible:
Exemple
pour résoudre le système linéaire:
on utilise le code:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# coding: utf-8 """ Résolution du système linéaire: 2x + 3y = 7 & x + 2y = 4 """ import numpy as np a = np.array([[2 , 3] , [1 , 2]] ) b = np.array([7 , 4] ) sol = np.linalg.solve(a , b ) print(sol) # affiche : [2. 1.] |
3.5 Les valeurs propres de la matrice avec linalg numpy
Pour calculer les valeurs propres d'une matrice avec numpy, nous utilisons la méthode eig() (eigenvalues en anglais):
Exemple
1 2 3 4 5 6 7 8 |
import numpy as np a = np.array ([[1, 2], [3, 2]]) valPropres = np.linalg.eigvals (a) print ("Les valeurs propres de la matrice a sont:", valPropres) # La sortie est: Les valeurs propres de la matrice a sont: [-1. 4.] |
3.6 Calcul des valeurs et vecteurs propres en même temps avec la méthode eig()
Pour calculer les valeurs et vecteurs propres d'une matrice, la méthode linalg.eigh() nous donne les deux en même temps:
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# coding: utf-8 import numpy as np a = np.array([[1 , 2] , [3 , 2]] ) valp , vecp = valPropres = np.linalg.eig(a) print("Valeurs propres : \n" , valp) print("Vecteurs propres : \n" ,vecp) # affiche : """ Valeurs propres : [4. 2.] Vecteurs propres : [[ 0.70710678 0.70710678] [-0.70710678 0.70710678]] """ |
3.7 Calcul du polynôme caractéristique d'une matrice avec numpy
La bibliothèque Numpy nous offre une méthode poly() comme outil efficace pour calculer facilement le polynôme caractéristique d'une matrice sans passer par le déterminant:
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# coding: utf-8 import numpy as np a = np.array([[1 , 2] , [3 , 2]] ) poly_caract = np.poly(a) print("Polynôme caractéristique : \n" , poly_caract) # affiche : """ Polynôme caractéristique : [ 1. -3. -4.] """ |
1 -3 et 4 sont les coefficients du polynôme caractéristique:
le polynôme caractéristique est doc P = X2 -3X -4
Remarque
Vous pouvez manipuler et utiliser plusieurs autres notions d'algèbre linéaire avec la bibliothèque linalg numpy, comme le polynôme caractéristique, le polome minimal, le rang d'une matrice ... Voir la documentation officielle: https://docs.scipy.org/doc/numpy/reference/routines.linalg.html
Younes Derfoufi
CRMEF OUJDA