Python dispose d’un ensemble solide de modules mathématiques dans la bibliothèque standard, et l’écosystème externe ajoute des capacités qui couvrent l’algèbre symbolique comme le calcul scientifique. Cet article parcourt 8 bibliothèques essentielles — quatre de la stdlib et quatre externes — pour vous aider à choisir l’outil adapté à votre problème.
Si vous ne maîtrisez pas encore les bases de Python, consultez notre guide de démarrage. Pour les patrons de gestion des erreurs dans le code qui utilise ces bibliothèques, voici des stratégies pratiques. Vous disposez aussi d’outils en ligne pour expérimenter.
Tableau de référence rapide — cliquez pour accéder à chaque section.
| Bibliothèque | Usage |
|---|---|
| math | Trigonométrie, logs, racine carrée |
| statistics | Moyenne, médiane, écart-type |
| decimal | Précision décimale exacte |
| fractions | Fractions exactes |
| NumPy | Tableaux et calcul vectorisé |
| SymPy | Algèbre symbolique |
| SciPy | Optimisation, intégration, algèbre linéaire |
| Pint | Unités physiques |
Bibliothèque standard
math
import math
# hypotenuse: sqrt(3²+4²)=5
print(math.sqrt(3**2 + 4**2)) # 5.0
# sin(30°) = 0.5
print(math.sin(math.radians(30))) # 0.5
# log10(1000) = 3
print(math.log10(1000)) # 3.0
Le module math fournit des fonctions trigonométriques, logarithmiques, exponentielles et diverses utilitaires numériques. Il convient parfaitement aux calculs scalaires qui ne nécessitent ni tableaux ni algèbre symbolique.
L’exemple montre l’hypoténuse d’un triangle 3-4-5, le sinus de 30 degrés (convertis avec radians), et le logarithme en base 10 de 1000. Ces opérations sont courantes en géométrie, physique et traitement du signal.
Si vous devez manipuler des nombres complexes, utilisez cmath au lieu de math.
statistics
import statistics
data = [120, 180, 250, 300, 420]
print(statistics.mean(data)) # 254.0
print(statistics.median(data)) # 250
print(statistics.stdev(data)) # ~118.5
Le module statistics propose des mesures de tendance centrale et de dispersion. Il est idéal pour une analyse descriptive rapide sans installer NumPy.
Dans l’exemple, on calcule la moyenne, la médiane et l’écart-type d’un échantillon de prix ou de mesures. La médiane est plus robuste que la moyenne face aux valeurs aberrantes.
Pour des jeux de données volumineux ou lorsque vous avez déjà des tableaux NumPy, numpy est généralement plus performant.
decimal
# floating-point trap
print(0.1 + 0.2) # 0.30000000000000004
from decimal import Decimal
price = Decimal("19.99")
with_tax = price * (1 + Decimal("0.10"))
print(with_tax) # 21.989
La virgule flottante binaire provoque des erreurs d’arrondi connues : 0.1 + 0.2 n’est pas exactement 0,3. Pour l’argent, les taxes ou tout calcul où la précision décimale compte, utilisez decimal.
Avec Decimal, on représente des quantités avec une précision décimale exacte. Dans l’exemple, on applique 10 % de TVA à 19,99 et on obtient 21,989 sans artefacts de virgule flottante.
Configurez le contexte (getcontext().prec) si vous avez besoin de plus de chiffres significatifs.
fractions
from fractions import Fraction
print(Fraction(2, 5) + Fraction(1, 10)) # 1/2
Le module fractions représente les nombres rationnels comme des quotients d’entiers, en évitant les erreurs d’arrondi dans les opérations fractionnaires.
On additionne 2/5 et 1/10 pour obtenir exactement 1/2. Utile dans les algorithmes de proportions, la théorie des nombres ou quand l’arithmétique exacte importe.
Pour des calculs numériques intensifs, NumPy reste préférable ; Fraction brille dans les cas symboliques ou discrets.
Bibliothèques externes
NumPy
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
normalized = (arr - arr.mean()) / arr.std()
print(normalized.mean()) # ~0
print(normalized.std()) # 1.0
NumPy est le standard de facto pour le calcul numérique en Python. Il fournit des tableaux multidimensionnels et des opérations vectorisées nettement plus rapides que les boucles Python pures.
Dans l’exemple, on normalise un tableau en soustrayant la moyenne et en divisant par l’écart-type — une opération typique en machine learning et analyse de données.
Pratiquement toutes les bibliothèques scientifiques (SciPy, Pandas, scikit-learn) s’appuient sur NumPy.
SymPy
from sympy import symbols, diff, solve
x = symbols('x')
print(diff(x**3 - x, x)) # 3*x**2 - 1
print(solve(x**3 - x, x)) # [-1, 0, 1]
SymPy effectue de l’algèbre symbolique : dérivées, intégrales, résolution d’équations, simplification d’expressions. Tout reste sous forme symbolique jusqu’à ce que vous décidiez d’évaluer numériquement.
On dérive x³ − x pour obtenir 3x² − 1 et on résout l’équation pour trouver les racines. Idéal pour les mathématiques discrètes, la physique théorique ou la vérification de formules.
Vous pouvez exporter les expressions en LaTeX, en C, ou les évaluer avec sympify et lambdify pour les utiliser avec NumPy.
SciPy
from scipy.optimize import minimize
result = minimize(lambda x: x[0]**2 + 3*x[0] + 2, x0=[0])
print(result.x) # [-1.5] (mínimo en x=-1.5)
SciPy étend NumPy avec des algorithmes scientifiques : optimisation, intégration, interpolation, algèbre linéaire numérique, traitement du signal, etc.
On minimise la fonction x² + 3x + 2, dont le minimum se trouve en x = −1,5. L’optimiseur retourne cette valeur dans result.x.
SciPy est la pièce maîtresse pour les problèmes d’ingénierie et de science computationnelle qui vont au-delà de l’analyse exploratoire.
Pint
from pint import UnitRegistry
ureg = UnitRegistry()
velocidad = (120 * ureg.km) / (2 * ureg.h)
print(velocidad.to(ureg.m / ureg.s)) # 16.67 m/s
Pint permet d’effectuer des calculs avec des unités physiques (mètres, secondes, kilogrammes, etc.) en évitant les erreurs de conversion manuelle.
On calcule une vitesse en km/h et on la convertit en m/s. Pint gère les unités de manière cohérente et détecte les incompatibilités dimensionnelles.
C’est particulièrement utile en simulation, dans les rapports scientifiques et tout contexte où les unités doivent être explicites et vérifiées.
Résumé
En résumé :
• math — trigonométrie, logs, exponentielles pour calculs scalaires
• statistics — moyenne, médiane, écart-type sans dépendances
• decimal — précision décimale exacte pour la finance
• fractions — arithmétique rationnelle exacte
• NumPy — tableaux et calcul vectorisé
• SymPy — algèbre symbolique
• SciPy — optimisation, intégration, algèbre linéaire
• Pint — calcul avec unités physiques

Laisser un commentaire