Repolode
pydata

pydata/numexpr

Быстрый вычислитель выражений над массивами NumPy: обрабатывает выражения вроде 3*a+4*b частями, экономит память и использует несколько ядер.

Звёзды
2,544
Форки
233
Открытые issues
18
Последний коммит
6 дней назад

Что это?

NumExpr вычисляет числовые выражения над массивами NumPy, например '3*a+4*b', быстрее и с меньшим расходом памяти, чем обычный Python. Он не создаёт временные массивы для промежуточных результатов, а обрабатывает данные небольшими частями, помещающимися в кэш CPU.

Части распределяются между доступными ядрами CPU, поэтому вычисления масштабируются на несколько потоков. В выражениях можно использовать распространённые математические функции и сравнения строковых массивов. Поддержка Intel MKL/VML может дополнительно ускорить трансцендентные функции, если проект собран с MKL.

Ускорение по сравнению с NumPy зависит от выражения и размера массива; по словам проекта, обычно оно заметнее всего на больших массивах и сложных выражениях.

Ключевые возможности

  • 01Вычисляет выражения над массивами без создания промежуточных временных массивов.
  • 02Разбивает работу на части размером с кэш и распределяет их между ядрами CPU.
  • 03Поддерживает распространённые математические функции и сравнения строковых массивов.
  • 04Опциональное ускорение трансцендентных функций с помощью Intel MKL/VML.
  • 05Устанавливается с помощью pip или conda.

Сценарии использования

  • Ускорение больших поэлементных вычислений над массивами NumPy.
  • Фильтрация массивов большого размера и вычисление условий, например в запросах Pandas или PyTables.
  • Снижение расхода памяти в численном коде с интенсивной работой с массивами.

Быстрый старт

  1. 1

    Установите из PyPI с помощью pip

    pip install numexpr
  2. 2

    Или установите с помощью conda, если используете Anaconda или Miniconda

    conda install numexpr
  3. 3

    Вычислите выражение для массивов NumPy

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

Что важно знать

  • Для очень простых выражений ускорение невелико; лучше всего оно заметно на больших массивах.
  • В wheels для pip нет поддержки Intel MKL; MKL доступен только в сборках conda, если NumPy использует MKL.
  • Проект ищет финансирование на будущее, поэтому долгосрочная поддержка не гарантирована.

Темы

Частые вопросы

Что такое numexpr?
Быстрый вычислитель выражений над массивами NumPy: обрабатывает выражения вроде 3*a+4*b частями, экономит память и использует несколько ядер. NumExpr вычисляет числовые выражения над массивами NumPy, например '3*a+4*b', быстрее и с меньшим расходом памяти, чем обычный Python. Он не создаёт временные массивы для промежуточных результатов, а обрабатывает данные небольшими частями, помещающимися в кэш CPU.
numexpr можно использовать бесплатно? Какая у него лицензия?
numexpr распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
numexpr всё ещё поддерживается?
Активно поддерживается. Последний коммит в numexpr — 13 окт. 2026 г..
Для чего можно использовать numexpr?
Ускорение больших поэлементных вычислений над массивами NumPy. Фильтрация массивов большого размера и вычисление условий, например в запросах Pandas или PyTables. Снижение расхода памяти в численном коде с интенсивной работой с массивами.
Как установить numexpr?
Установите из PyPI с помощью pip: pip install numexpr Или установите с помощью conda, если используете Anaconda или Miniconda: conda install numexpr Вычислите выражение для массивов NumPy: python -c "import numpy as np, numexpr as ne; a = np.arange(1e6); print(ne.evaluate('a + 1'))"
Где скачать numexpr?
Исходный код и инструкции по установке — на GitHub: https://github.com/pydata/numexpr

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Python-фреймворк для создания API со стандартными аннотациями типов, автоматической валидацией, документацией OpenAPI и высокой производительностью.

103,3 тыс.10,1 тыс.PythonMITОбновлён 5 часов назад