Python viene con un conjunto sólido de módulos matemáticos en la biblioteca estándar, y el ecosistema externo añade capacidades que cubren desde álgebra simbólica hasta computación científica. En este artículo recorremos 8 bibliotecas esenciales — cuatro de la stdlib y cuatro externas — para que puedas elegir la herramienta adecuada según tu problema.
Si aún no dominas los fundamentos de Python, consulta nuestra guía de inicio. Para patrones de manejo de errores en código que usa estas bibliotecas, aquí tienes estrategias prácticas. También dispones de herramientas en línea para experimentar.
Tabla de referencia rápida — haz clic para ir a cada sección.
| Biblioteca | Uso |
|---|---|
| math | Trigonometría, logs, raíz cuadrada |
| statistics | Media, mediana, desviación estándar |
| decimal | Precisión decimal exacta |
| fractions | Fracciones exactas |
| NumPy | Arrays y computación vectorizada |
| SymPy | Álgebra simbólica |
| SciPy | Optimización, integración, álgebra lineal |
| Pint | Unidades físicas |
Biblioteca estándar
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
El módulo math proporciona funciones trigonométricas, logarítmicas, exponenciales y diversas utilidades numéricas. Es ideal para cálculos escalares que no requieren arrays ni álgebra simbólica.
En el ejemplo vemos la hipotenusa de un triángulo 3-4-5, el seno de 30 grados (convertidos con radians), y el logaritmo en base 10 de 1000. Todas estas operaciones son habituales en geometría, física y procesamiento de señales.
Si necesitas trabajar con números complejos, usa cmath en lugar 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
El módulo statistics ofrece medidas de tendencia central y dispersión. Es perfecto para análisis descriptivo rápido sin instalar NumPy.
En el ejemplo calculamos media, mediana y desviación estándar de una muestra de precios o mediciones. La mediana es más robusta que la media ante valores atípicos.
Para datasets muy grandes o cuando ya tienes arrays NumPy, numpy suele ser más eficiente.
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
El punto flotante binario produce errores de redondeo conocidos: 0.1 + 0.2 no es exactamente 0.3. Para dinero, impuestos o cualquier cálculo donde la precisión decimal importe, usa decimal.
Con Decimal representamos cantidades con precisión decimal exacta. En el ejemplo aplicamos un 10% de IVA a 19.99 y obtenemos 21.989 sin artefactos de punto flotante.
Configura el contexto (getcontext().prec) si necesitas más dígitos significativos.
fractions
from fractions import Fraction
print(Fraction(2, 5) + Fraction(1, 10)) # 1/2
El módulo fractions representa números racionales como cocientes de enteros, evitando errores de redondeo en operaciones fraccionarias.
Sumamos 2/5 y 1/10 y obtenemos exactamente 1/2. Útil en algoritmos de proporciones, teoría de números o cuando la aritmética exacta importa.
Para cálculos numéricos intensivos, NumPy sigue siendo preferible; Fraction brilla en casos simbólicos o discretos.
Bibliotecas externas
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 es el estándar de facto para computación numérica en Python. Proporciona arrays multidimensionales y operaciones vectorizadas que son órdenes de magnitud más rápidas que bucles en Python puro.
En el ejemplo normalizamos un array restando la media y dividiendo por la desviación estándar — una operación típica en machine learning y análisis de datos.
Casi todas las bibliotecas científicas (SciPy, Pandas, scikit-learn) se apoyan en 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 realiza álgebra simbólica: derivadas, integrales, resolución de ecuaciones, simplificación de expresiones. Todo se mantiene en forma simbólica hasta que decides evaluar numéricamente.
Derivamos x³ − x para obtener 3x² − 1 y resolvemos la ecuación para hallar las raíces. Ideal para matemáticas discretas, física teórica o verificación de fórmulas.
Puedes exportar expresiones a LaTeX, C, o evaluarlas con sympify y lambdify para usarlas con 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 extiende NumPy con algoritmos científicos: optimización, integración, interpolación, álgebra lineal numérica, procesamiento de señales, etc.
Minimizamos la función x² + 3x + 2, cuyo mínimo está en x = −1.5. El optimizador devuelve ese valor en result.x.
SciPy es la pieza central para problemas de ingeniería y ciencia computacional que van más allá del análisis exploratorio.
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 permite realizar cálculos con unidades físicas (metros, segundos, kilogramos, etc.) evitando errores de conversión manual.
Calculamos una velocidad en km/h y la convertimos a m/s. Pint maneja las unidades de forma coherente y detecta incompatibilidades dimensionales.
Es especialmente útil en simulaciones, informes científicos y cualquier contexto donde las unidades deban estar explícitas y verificadas.
Resumen
En resumen:
• math — trigonometría, logs, exponenciales para cálculos escalares
• statistics — media, mediana, desviación estándar sin dependencias
• decimal — precisión decimal exacta para finanzas
• fractions — aritmética racional exacta
• NumPy — arrays y computación vectorizada
• SymPy — álgebra simbólica
• SciPy — optimización, integración, álgebra lineal
• Pint — cálculo con unidades físicas

Deja una respuesta