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.3 Inverse d'une matrice avec numpy linalg
____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 |
import numpy as np a = np.array ([ligne1, ligne2, ligne3]) |
Exemple: matrice à 2 lignes et 3 colonnes 2x3
1 2 3 4 5 6 7 8 9 10 |
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 |
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
1 2 3 4 5 6 |
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 ligne à une position spécifique dans un tableau NumPy existant, vous pouvez utiliser la fonction numpy.insert. Voici un exemple pour ajouter une ligne à la deuxième position (index 1) d'un tableau à deux dimensions :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import numpy as np # Créer un tableau à deux dimensions arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Créer une nouvelle ligne à ajouter new_row = np.array([10, 11, 12]) # Utiliser la fonction insert pour ajouter la nouvelle ligne à la position souhaitée new_arr = np.insert(arr, 1, new_row, axis=0) # Afficher le nouveau tableau print(new_arr) """ output: array([[ 1, 2, 3], [10, 11, 12], [ 4, 5, 6], [ 7, 8, 9]]) """ |
Dans cet exemple:
- np.insert(arr, 1, new_row, axis=0): insère la ligne new_row à la position 1 (c'est-à-dire juste après la première ligne), en déplaçant toutes les lignes suivantes vers le bas.
- L'argument axis=0: indique que l'insertion doit se faire sur l'axe des lignes (l'axe 1 est l'axe des colonnes).
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
4. Liste des principales méthodes associées à la bibliothèque numpy
La bibliothèque numpy est une bibliothèque très riche en fonctionnalités pour le calcul scientifique en Python. Voici une liste non exhaustive des principales méthodes associées à numpy:
- np.array() : Crée un tableau numpy à partir d'une liste ou d'un tableau existant.
- np.arange() : Crée un tableau numpy contenant une séquence d'entiers.
- np.linspace() : Crée un tableau numpy contenant une séquence de nombres à espacement régulier.
- np.logspace() : Crée un tableau numpy contenant une séquence de nombres à espacement logarithmique.
- np.zeros() : Crée un tableau numpy rempli de zéros.
- np.ones() : Crée un tableau numpy rempli de uns.
- np.eye() : Crée un tableau numpy qui représente la matrice identité.
- np.diag() : Crée un tableau numpy contenant une diagonale spécifiée.
- np.random.rand() : Génère des nombres aléatoires uniformément distribués dans un tableau numpy.
- np.random.randn() : Génère des nombres aléatoires à partir d'une distribution normale dans un tableau numpy.
- np.random.randint() : Génère des nombres aléatoires entiers dans un tableau numpy.
- np.random.random_sample() : Génère des nombres aléatoires dans l'intervalle [0, 1] dans un tableau numpy.
- np.random.choice() : Génère un échantillon aléatoire à partir d'un tableau numpy.
- np.empty() : Crée un tableau numpy vide.
- np.ndim() : Retourne le nombre de dimensions d'un tableau numpy.
- np.shape() : Retourne la forme d'un tableau numpy.
- np.size() : Retourne le nombre total d'éléments dans un tableau numpy.
- np.dtype() : Retourne le type de données d'un tableau numpy.
- np.astype() : Convertit le type de données d'un tableau numpy.
- np.reshape() : Modifie la forme d'un tableau numpy.
- np.resize() : Modifie la taille d'un tableau numpy.
- np.transpose() : Transpose un tableau numpy.
- np.concatenate() : Concatène deux tableaux numpy.
- np.split() : Divise un tableau numpy en plusieurs sous-tableaux.
- np.copy() : Crée une copie d'un tableau numpy.
- np.save() : Enregistre un tableau numpy dans un fichier.
- np.load() : Charge un tableau numpy à partir d'un fichier.
- np.add() : Effectue l'addition de deux tableaux numpy.
- np.subtract() : Effectue la soustraction de deux tableaux numpy.
- np.multiply() : Effectue la multiplication de deux tableaux numpy.
- np.divide() : Effectue la division de deux tableaux numpy.
- np.dot() : Calcule le produit scalaire de deux tableaux numpy.
- np.sum() : Calcule la somme des éléments d'un tableau numpy.
- np.mean() : Calcule la moyenne des éléments d'un tableau numpy.
- np.std() : Calcule l'écart type des éléments d'un tableau numpy.
- np.var() : Calcule la variance des éléments d'un tableau numpy.
- np.min() : Retourne la valeur minimale d'un tableau numpy.
- np.max() : Retourne la valeur maximale d'un tableau numpy.
- np.argmin() : Retourne l'indice de la valeur minimale.
Younes Derfoufi
CRMEF OUJDA