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
4. Liste des principales méthodes associées à la biliothèque numpy
5. Liste des principaux sous modules de la biliothèque 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://np.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 |
pip install numpy |
2. Matrice ou tableau avec numpy
2.1 Syntaxe de création d'une matrice avec numpy
1 2 |
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 |
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 |
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 |
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 |
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 |
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 |
np.linspace() |
Exemple
1 2 3 4 5 |
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 |
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 |
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 |
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 |
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:
- np.r_()
- np.vstack()
- np.append()
- np.insert()
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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 np.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 |
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 np.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 |
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 |
# 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 |
# 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 |
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 |
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 |
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 |
# 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 |
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 |
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 |
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 |
# 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 |
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 |
# 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 |
# 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:
- numpy.add() : Effectue l'addition de deux tableaux numpy.
- numpy.array() : Crée un tableau numpy à partir d'une liste ou d'un tableau existant.
- numpy.argmax() : Retourne l'indice de la valeur maximale d'un tableau.
- numpy.argmin() : Retourne l'indice de la valeur minimale.
- numpy.arange() : Crée un tableau numpy contenant une séquence d'entiers.
- numpy.astype() : Convertit le type de données d'un tableau numpy.
- numpy.bicount(): compte le nombre d'occurrences de chaque valeur entière dans un tableau.
- numpy.concatenate() : Concatène deux tableaux numpy.
- numpy.copy() : Crée une copie d'un tableau numpy.
- numpy.diag() : Crée un tableau numpy contenant une diagonale spécifiée.
- numpy.divide() : Effectue la division de deux tableaux numpy.
- numpy.dot() : Calcule le produit scalaire de deux tableaux numpy.
- numpy.dtype() : Retourne le type de données d'un tableau numpy.
- numpy.empty() : Crée un tableau numpy vide.
- numpy.eye() : Crée un tableau numpy qui représente la matrice identité.
- numpy.linspace() : Crée un tableau numpy contenant une séquence de nombres à espacement régulier.
- numpy.load() : Charge un tableau numpy à partir d'un fichier.
- numpy.logspace() : Crée un tableau numpy contenant une séquence de nombres à espacement logarithmique.
- numpy.max() : Retourne la valeur maximale d'un tableau numpy.
- numpy.multiply() : Effectue la multiplication de deux tableaux numpy.
- numpy.mean() : Calcule la moyenne des éléments d'un tableau numpy
- numpy.min() : Retourne la valeur minimale d'un tableau numpy.
- numpy.ndim() : Retourne le nombre de dimensions d'un tableau numpy.
- numpy.ones() : Crée un tableau numpy rempli de uns.
- numpy.random.rand() : Génère des nombres aléatoires uniformément distribués dans un tableau numpy.
- numpy.random.randn() : Génère des nombres aléatoires à partir d'une distribution normale dans un tableau numpy.
- numpy.random.randint() : Génère des nombres aléatoires entiers dans un tableau numpy.
- numpy.random.random_sample() : Génère des nombres aléatoires dans l'intervalle [0, 1] dans un tableau numpy.
- numpy.random.choice() : Génère un échantillon aléatoire à partir d'un tableau numpy.
- numpy.reshape() : Modifie la forme d'un tableau numpy.
- numpy.resize() : Modifie la taille d'un tableau numpy.
- numpy.save() : Enregistre un tableau numpy dans un fichier.
- numpy.shape() : Retourne la forme d'un tableau numpy.
- numpy.size() : Retourne le nombre total d'éléments dans un tableau numpy.
- numpy.split() : Divise un tableau numpy en plusieurs sous-tableaux.
- numpy.std() : Calcule l'écart type des éléments d'un tableau numpy.
- numpy.subtract() : Effectue la soustraction de deux tableaux numpy.
- numpy.sum() : Calcule la somme des éléments d'un tableau numpy.
- numpy.transpose() : Transpose un tableau numpy.
- numpy.var() : Calcule la variance des éléments d'un tableau numpy.
- numpy.zeros() : Crée un tableau numpy rempli de zéros.
5. Liste des principaux sous modules de la biliothèque numpy
La bibliothèque NumPy (Numerical Python) fournit des sous modules contenant des structures de données et des fonctions pour travailler avec des tableaux multidimensionnels et des matrices, ainsi que des fonctions mathématiques pour effectuer des opérations numériques. Ces sous-modules couvrent un large éventail de fonctionnalités pour le calcul numérique en Python, et ils sont utilisés dans de nombreuses applications scientifiques. Voici une liste des principaux sous-modules de la bibliothèque NumPy :
- numpy.array: Il s'agit du sous-module principal qui définit l'objet ndarray (n-dimensional array), qui est utilisé pour stocker et manipuler des données multidimensionnelles de manière efficace.
- numpy.char: Ce sous-module fournit des fonctionnalités pour travailler avec des chaînes de caractères, en particulier lorsque vous traitez des tableaux de chaînes de caractères.
- numpy.ctypeslib: Il permet d'intégrer NumPy avec des bibliothèques écrites en langage C.
- numpy.datetime64: Il permet de travailler avec des dates et des heures à l'aide du type de données datetime64, qui est optimisé pour les calculs de date et d'heure.
- numpy.distutils: Ce sous-module est utilisé pour la construction et la distribution de modules Python qui dépendent de NumPy.
- numpy.doc: Il contient de la documentation sur NumPy.
- numpy.einsum: C'est un outil puissant pour effectuer des opérations de somme, de produit, et de contraction sur des tenseurs multidimensionnels.
- numpy.f2py: Il s'agit d'un outil qui facilite l'intégration de code Fortran dans Python via NumPy.
- numpy.fft: Ce sous-module fournit des outils pour effectuer des transformations de Fourier, utiles dans le traitement du signal et d'autres domaines.
- numpy.lib.format: Ce sous-module gère le format de stockage des tableaux NumPy, y compris la sérialisation des données.
- numpy.lib: Il contient des fonctionnalités auxiliaires pour travailler avec NumPy, telles que des fonctions pour la manipulation de mémoire, la gestion des types de données, etc.
- numpy.linalg: Ce sous-module fournit des fonctionnalités pour l'algèbre linéaire, telles que la résolution de systèmes d'équations linéaires, la décomposition en valeurs singulières (SVD), et plus encore.
- numpy.ma.extras: Il fournit des fonctions supplémentaires pour la manipulation de tableaux masqués.
- numpy.ma: Il propose une prise en charge des tableaux masqués, utiles lorsque vous travaillez avec des données manquantes ou des données masquées.
- numpy.polynomial: ce sous-module permet de travailler avec des polynômes et de réaliser des opérations polynomial, notamment l'ajustement de courbes.
- numpy.random: Il permet de générer des nombres aléatoires et des échantillons aléatoires à partir de différentes distributions de probabilité.
- numpy.testing: Ce sous-module contient des outils pour tester et vérifier la validité des fonctions et des résultats NumPy.
- numpy.version: Il permet d'obtenir la version actuelle de NumPy.
Younes Derfoufi
CRMEF OUJDA
2 thoughts on “La bibliothèque Mathématique Numpy En Python”