8 Bibliotecas de Python para Cálculos Matemáticos — De la stdlib a NumPy y SciPy

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.

BibliotecaUso
mathTrigonometría, logs, raíz cuadrada
statisticsMedia, mediana, desviación estándar
decimalPrecisión decimal exacta
fractionsFracciones exactas
NumPyArrays y computación vectorizada
SymPyÁlgebra simbólica
SciPyOptimización, integración, álgebra lineal
PintUnidades físicas

Biblioteca estándar

math

math_demo.py
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

stats_demo.py
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

decimal_demo.py
# 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

fractions_demo.py
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

numpy_demo.py
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

sympy_demo.py
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

scipy_demo.py
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

pint_demo.py
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

Comments

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *