Repolode
pydata

pydata/numexpr

Evaluador rápido de expresiones sobre arrays de NumPy que calcula expresiones como 3*a+4*b en bloques, con menos memoria y varios núcleos.

Estrellas
2,544
Forks
233
Issues abiertos
18
Último commit
hace 7 días

¿Qué es?

NumExpr evalúa expresiones numéricas sobre arrays de NumPy, como '3*a+4*b', más rápido y con menos memoria que al calcular lo mismo en Python puro. Evita asignar arrays temporales para los resultados intermedios y procesa los datos en bloques pequeños que caben en la caché de la CPU.

Los bloques se distribuyen entre los núcleos de CPU disponibles, por lo que los cálculos escalan a varios hilos. Las expresiones pueden usar funciones matemáticas habituales y comparaciones de arrays de cadenas. La compatibilidad con Intel MKL/VML puede acelerar aún más las funciones trascendentales si se compila con MKL.

Las mejoras de velocidad frente a NumPy dependen de la expresión y del tamaño del array; el proyecto señala que suelen ser mayores con arrays grandes y expresiones complejas.

Funciones clave

  • 01Evalúa expresiones sobre arrays sin asignar temporales intermedios.
  • 02Divide el trabajo en bloques del tamaño de la caché y los distribuye entre los núcleos de CPU.
  • 03Admite funciones matemáticas habituales y comparaciones de arrays de cadenas.
  • 04Aceleración opcional de funciones trascendentales con Intel MKL/VML.
  • 05Se instala con pip o conda.

Casos de uso

  • Acelerar cálculos grandes elemento a elemento sobre arrays de NumPy.
  • Filtrar o calcular condiciones sobre arrays grandes, como en consultas de Pandas o PyTables.
  • Reducir el uso de memoria en código numérico que trabaja intensivamente con arrays.

Inicio rápido

  1. 1

    Instalar desde PyPI con pip

    pip install numexpr
  2. 2

    También puedes instalarlo con conda si usas Anaconda o Miniconda

    conda install numexpr
  3. 3

    Evaluar una expresión en arrays de NumPy

    python -c "import numpy as np, numexpr as ne; a = np.arange(1e6); print(ne.evaluate('a + 1'))"

Antes de usarlo

  • Las mejoras de velocidad son pequeñas para expresiones muy sencillas y funcionan mejor con arrays grandes.
  • Los wheels de pip no incluyen compatibilidad con Intel MKL; MKL solo está disponible en las compilaciones de conda cuando NumPy usa MKL.
  • El proyecto está buscando financiación para su futuro, por lo que el mantenimiento a largo plazo es incierto.

Temas

Preguntas frecuentes

¿Qué es numexpr?
Evaluador rápido de expresiones sobre arrays de NumPy que calcula expresiones como 3*a+4*b en bloques, con menos memoria y varios núcleos. NumExpr evalúa expresiones numéricas sobre arrays de NumPy, como '3*a+4*b', más rápido y con menos memoria que al calcular lo mismo en Python puro. Evita asignar arrays temporales para los resultados intermedios y procesa los datos en bloques pequeños que caben en la caché de la CPU.
¿numexpr es gratuito? ¿Qué licencia tiene?
numexpr es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿numexpr sigue mantenido?
Mantenimiento activo. El último commit de numexpr fue el 13 oct 2026.
¿Para qué puedo usar numexpr?
Acelerar cálculos grandes elemento a elemento sobre arrays de NumPy. Filtrar o calcular condiciones sobre arrays grandes, como en consultas de Pandas o PyTables. Reducir el uso de memoria en código numérico que trabaja intensivamente con arrays.
¿Cómo se instala numexpr?
Instalar desde PyPI con pip: pip install numexpr También puedes instalarlo con conda si usas Anaconda o Miniconda: conda install numexpr Evaluar una expresión en arrays de NumPy: python -c "import numpy as np, numexpr as ne; a = np.arange(1e6); print(ne.evaluate('a + 1'))"
¿Dónde consigo numexpr?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/pydata/numexpr

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados