HOWTO · Python

Utiliser le nombre d’Euler en Python

Utilisez correctement math.e, math.exp() et numpy.exp() pour le nombre d’Euler en Python.

Sur cette page

Utilisez math.e pour obtenir la valeur flottante du nombre d’Euler, math.exp(x) pour élever e à un exposant scalaire et numpy.exp(values) pour effectuer ce calcul sur chaque élément d’un tableau. Le module math fait partie de la bibliothèque standard de Python ; NumPy est une dépendance facultative pour les tableaux. Ce choix dépend de la forme et de l’objectif de l’entrée, et non d’un classement universel de rapidité.

Le nombre d’Euler, généralement écrit e, est la base des logarithmes naturels. Python le stocke comme une valeur flottante binaire : le format d’affichage peut donc changer sa représentation sans modifier la valeur utilisée ensuite.

Lire math.e pour obtenir la constante

Importez e depuis math pour lire directement la constante. C’est utile pour des libellés, des formules ou un calcul qui nécessite explicitement la valeur de base. La sortie correspond à la représentation habituelle d’un flottant Python dans l’environnement testé.

from math import e

print(e)
2.718281828459045

N’utilisez le formatage qu’au moment de présenter le résultat. Ainsi, f"{e:.5f}" affiche 2.71828, mais ne rend pas le flottant stocké plus précis. Conservez la valeur non formatée pendant les calculs et arrondissez-la seulement lorsqu’un lecteur, un fichier ou une interface exige un nombre précis de décimales.

Utiliser math.exp() pour un exposant scalaire

Pour un scalaire x, utilisez math.exp(x) pour calculer e à la puissance x. L’opération est explicite et la documentation Python indique qu’elle est généralement plus précise que math.e ** x. math.expm1(x) convient à l’expression exp(x) - 1 et évite de perdre des chiffres significatifs lorsque x est très proche de zéro.

import math

print(math.exp(3))
print(math.expm1(1e-16))
20.085536923187668
1e-16

La première ligne calcule le cube de e. La seconde montre le petit résultat produit par expm1 ; soustraire 1 de math.exp(1e-16) peut arrondir certaines informations avant la fin de la soustraction.

math.exp() est limité par l’intervalle des flottants Python. Un exposant fini assez grand déclenche OverflowError. Gérez cette limite lorsque l’entrée peut être sans borne au lieu de supposer que tout exposant produit un résultat représentable.

import math

try:
    math.exp(1000)
except OverflowError as error:
    print(type(error).__name__)
OverflowError

Si un dépassement est attendu, vérifiez l’intervalle d’entrée, changez la représentation mathématique ou utilisez une méthode numérique adaptée au domaine. Intercepter l’exception est utile lorsqu’elle fait partie du comportement prévu, mais cela ne doit pas masquer une erreur d’entrée inattendue.

Utiliser numpy.exp() pour les valeurs d’un tableau

numpy.exp() est une fonction universelle appliquée élément par élément. Donnez-lui une collection de type tableau lorsque chaque exposant doit produire son propre résultat. Installez NumPy avec l’outil de dépendances habituel du projet s’il n’est pas déjà disponible ; le module math de la bibliothèque standard ne fournit pas d’opérations sur les tableaux.

import numpy as np

exponents = np.array([0.0, 1.0, 2.0])
print(np.exp(exponents))
[1.         2.71828183 7.3890561 ]

Le tableau renvoyé a la même forme que l’entrée et contient e élevé à chaque élément. Utilisez math.exp() pour un scalaire et numpy.exp() lorsque la sémantique de tableau est nécessaire ; NumPy accepte aussi un scalaire, mais son import n’est pas utile pour un seul calcul scalaire.

Choisir la méthode selon l’entrée

Lisez la constante avec math.e, utilisez math.exp() pour un exposant scalaire et numpy.exp() pour les calculs élément par élément sur un tableau. Utilisez math.expm1() lorsque le résultat recherché est exp(x) - 1 près de zéro. Ces API utilisent des valeurs flottantes finies : le formatage modifie l’affichage et les très grands résultats exponentiels peuvent ne pas tenir dans un flottant. Consultez la documentation officielle de Python sur math et la documentation NumPy de exp.