Introduction
NumPy est bien plus qu'un simple outil pour manipuler des tableaux en Python. Grâce à ses fonctions optimisées pour les calculs mathématiques avancés, NumPy permet d'effectuer des opérations complexes sur des vecteurs, des matrices, ainsi que des calculs d'algèbre linéaire et statistiques. Dans cet article, nous allons explorer les fonctionnalités avancées de NumPy pour les calculs mathématiques, et voir comment les utiliser pour des applications scientifiques, financières, et d'ingénierie.
1. Opérations mathématiques élémentaires
NumPy permet de réaliser des opérations mathématiques élémentaires de manière efficace et vectorisée, ce qui est plus rapide qu'avec les listes Python.
1.1. Addition, soustraction, multiplication et division
Les opérations élémentaires peuvent être appliquées directement aux tableaux.
import numpy as np
# Création de deux tableaux
tableau1 = np.array([1, 2, 3])
tableau2 = np.array([4, 5, 6])
# Opérations élémentaires
addition = tableau1 + tableau2
soustraction = tableau1 - tableau2
multiplication = tableau1 * tableau2
division = tableau1 / tableau2
print("Addition :", addition) # [5 7 9]
print("Soustraction :", soustraction) # [-3 -3 -3]
print("Multiplication :", multiplication) # [4 10 18]
print("Division :", division) # [0.25 0.4 0.5]
2. Fonctions mathématiques avancées
NumPy inclut des fonctions mathématiques comme les puissances, racines carrées, exponentielles et logarithmes.
2.1. Puissances et racines
# Éléments au carré
carre = np.square(tableau1)
racine = np.sqrt(tableau1)
print("Carré :", carre) # [1 4 9]
print("Racine carrée :", racine) # [1. 1.41421356 1.73205081]
2.2. Exponentielle et logarithme
# Exponentielle et logarithme naturel
expo = np.exp(tableau1)
logarithme = np.log(np.array([1, np.e, np.e**2]))
print("Exponentielle :", expo) # [2.71828183 7.3890561 20.08553692]
print("Logarithme :", logarithme) # [0. 1. 2.]
2.3. Fonctions trigonométriques
angles = np.array([0, np.pi / 2, np.pi])
# Calculer sinus, cosinus, et tangente
sinus = np.sin(angles)
cosinus = np.cos(angles)
tangente = np.tan(angles)
print("Sinus :", sinus) # [0. 1. 0.]
print("Cosinus :", cosinus) # [1. 0. -1.]
print("Tangente :", tangente) # [0. inf 0.]
3. Algèbre linéaire avec NumPy
La bibliothèque numpy.linalg
fournit des fonctions pour effectuer des calculs d'algèbre linéaire, tels que les produits matriciels, les inverses de matrices et la décomposition en valeurs propres.
3.1. Produit matriciel
Le produit matriciel est une opération essentielle en algèbre linéaire, utile dans de nombreux domaines comme le traitement d'image et l'apprentissage automatique.
# Création de deux matrices 2x2
matrice1 = np.array([[1, 2], [3, 4]])
matrice2 = np.array([[5, 6], [7, 8]])
# Produit matriciel
produit = np.dot(matrice1, matrice2)
print("Produit matriciel :\n", produit)
3.2. Inverse de matrice
Pour calculer l'inverse d'une matrice carrée, utilisez la fonction np.linalg.inv()
.
# Inverse de matrice
inverse = np.linalg.inv(matrice1)
print("Inverse de la matrice :\n", inverse)
3.3. Valeurs propres et vecteurs propres
Les valeurs propres et les vecteurs propres sont essentiels pour l'analyse des matrices, notamment en analyse des données.
# Calcul des valeurs propres et vecteurs propres
valeurs_propres, vecteurs_propres = np.linalg.eig(matrice1)
print("Valeurs propres :", valeurs_propres)
print("Vecteurs propres :\n", vecteurs_propres)
4. Calculs statistiques avec NumPy
Les fonctions statistiques de NumPy permettent d'effectuer des calculs de moyenne, médiane, écart-type et bien plus, sur des tableaux de données.
4.1. Moyenne, médiane et écart-type
tableau = np.array([10, 20, 30, 40, 50])
moyenne = np.mean(tableau)
mediane = np.median(tableau)
ecart_type = np.std(tableau)
print("Moyenne :", moyenne) # 30.0
print("Médiane :", mediane) # 30.0
print("Écart-type :", ecart_type) # 14.142135623730951
4.2. Somme et produit cumulés
Ces fonctions permettent de calculer la somme ou le produit cumulés des éléments dans un tableau.
somme_cumulee = np.cumsum(tableau)
produit_cumule = np.cumprod(tableau)
print("Somme cumulée :", somme_cumulee) # [10 30 60 100 150]
print("Produit cumulé :", produit_cumule) # [10 200 6000 240000 12000000]
5. Opérations sur les matrices avec NumPy
NumPy fournit de nombreuses fonctions pour travailler avec des matrices et des opérations vectorielles, qui sont essentielles pour le calcul scientifique.
5.1. Transposée de matrice
La transposée d'une matrice peut être obtenue avec l'attribut .T
.
matrice = np.array([[1, 2, 3], [4, 5, 6]])
transposee = matrice.T
print("Transposée :\n", transposee)
5.2. Norme d'un vecteur
La norme d'un vecteur est calculée avec np.linalg.norm()
et est utile pour des calculs comme les distances et les projections.
vecteur = np.array([3, 4])
norme = np.linalg.norm(vecteur)
print("Norme du vecteur :", norme) # Affiche 5.0, (hypoténuse d'un triangle 3-4-5)
6. Fonctions d'agrégation et calculs le long d'axes
NumPy permet d'appliquer des fonctions de manière agrégée (comme la somme ou la moyenne) le long d'axes spécifiques dans un tableau multidimensionnel.
Exemple : Somme et moyenne le long d’un axe
matrice = np.array([[1, 2, 3], [4, 5, 6]])
# Somme par colonne (axis=0)
somme_colonnes = np.sum(matrice, axis=0)
print("Somme par colonne :", somme_colonnes)
# Moyenne par ligne (axis=1)
moyenne_lignes = np.mean(matrice, axis=1)
print("Moyenne par ligne :", moyenne_lignes)
7. Génération de données aléatoires
NumPy propose des fonctions pour générer des nombres aléatoires sous différentes distributions, essentielles pour les simulations et les statistiques.
7.1. Génération de nombres aléatoires uniformes et gaussiens
# Nombres aléatoires uniformes entre 0 et 1
uniformes = np.random.rand(5)
print("Uniformes :", uniformes)
# Nombres aléatoires suivant une distribution normale (moyenne 0, écart-type 1)
gaussiens = np.random.randn(5)
print("Gaussiens :", gaussiens)
7.2. Génération de matrices aléatoires entières
# Matrice 3x3 de nombres entiers aléatoires entre 1 et 10
entiers = np.random.randint(1, 10, (3, 3))
print("Entiers aléatoires :\n", entiers)
Conclusion
NumPy est une bibliothèque incontournable pour les calculs mathématiques avancés en Python. Que vous travailliez en algèbre linéaire, en statistiques, ou en simulation, NumPy fournit les outils pour effectuer des calculs de manière efficace et rapide. En maîtrisant ces fonctions avancées, vous pouvez optimiser vos projets scientifiques, d'analyse de données, ou d'apprentissage automatique.