HOWTO · Python

Cómo usar el número de Euler en Python

Usa math.e, math.exp() y numpy.exp() correctamente para el número de Euler en Python.

En esta página

Usa math.e cuando necesites el valor de punto flotante del número de Euler, math.exp(x) cuando necesites elevar e a un exponente escalar y numpy.exp(values) cuando debas hacer ese cálculo para cada elemento de un arreglo. El módulo math forma parte de la biblioteca estándar de Python; NumPy es una dependencia opcional para trabajar con arreglos. Estas opciones dependen de la forma y la finalidad de la entrada, no de una clasificación universal de velocidad.

El número de Euler, normalmente escrito como e, es la base de los logaritmos naturales. Python lo almacena como un valor binario de punto flotante, por lo que el formato de impresión puede cambiar su apariencia sin cambiar el valor usado en cálculos posteriores.

Lee math.e cuando necesites la constante

Importa e desde math para leer directamente la constante. Esto resulta útil para etiquetas, fórmulas o cálculos que necesitan explícitamente el valor de la base. La salida es la representación normal de un float de Python en el entorno probado.

from math import e

print(e)
2.718281828459045

Usa el formato solo al presentar el resultado. Por ejemplo, f"{e:.5f}" muestra 2.71828, pero no hace más preciso el float almacenado. Conserva el valor sin formato durante los cálculos y redondéalo solo cuando un lector, archivo o interfaz necesite un número concreto de decimales.

Usa math.exp() para un exponente escalar

Para un x escalar, usa math.exp(x) para calcular e elevado a x. La operación queda clara y la documentación de Python indica que, por lo general, es más precisa que escribir math.e ** x. math.expm1(x) es una función relacionada para la expresión concreta exp(x) - 1; evita perder precisión significativa cuando x está muy cerca de cero.

import math

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

La primera línea calcula e al cubo. La segunda muestra el pequeño resultado producido por expm1; restar 1 a math.exp(1e-16) puede redondear y eliminar información antes de completar la resta.

math.exp() está limitado por el rango del float de Python. Un exponente finito suficientemente grande produce OverflowError; si la entrada puede no estar acotada, trata ese límite en vez de suponer que todo exponente tiene un resultado representable.

import math

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

Si una aplicación espera un desbordamiento, valida el rango de entrada, cambia la representación matemática o usa un método numérico adecuado al dominio. Capturar la excepción es útil cuando forma parte del comportamiento previsto, pero no debe ocultar un error de entrada inesperado.

Usa numpy.exp() para valores de arreglos

numpy.exp() es una función universal que opera elemento a elemento. Pásale una colección similar a un arreglo cuando cada exponente necesite su propio resultado. Instala NumPy con la herramienta de dependencias habitual del proyecto si aún no está disponible; el módulo math de la biblioteca estándar no ofrece operaciones con arreglos.

import numpy as np

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

El arreglo devuelto tiene la misma forma que la entrada y contiene e elevado a cada elemento. Usa math.exp() para un escalar y numpy.exp() cuando necesites semántica de arreglos; NumPy también puede aceptar un escalar, pero importarlo solo para un cálculo escalar no es necesario.

Elige el método según la entrada

Usa math.e para leer la constante, math.exp() para un exponente escalar y numpy.exp() para cálculos elemento a elemento en arreglos. Usa math.expm1() cuando el resultado requerido sea exp(x) - 1 cerca de cero. En todos los casos, recuerda que estas API usan valores finitos de punto flotante: el formato afecta la presentación y los resultados exponenciales muy grandes quizá no quepan en un float. Consulta la documentación oficial de Python math y la documentación de exp de NumPy para conocer todos los detalles.