Repolode
pydata

pydata/numexpr

面向 NumPy 的快速数组表达式求值库,分块并行计算,减少内存占用。

Star
2,544
Fork
233
未关闭 Issue
18
最近提交
7天前

这是什么?

NumExpr 用于在 NumPy 数组上求值数值表达式,例如 '3*a+4*b',相比直接用 Python 计算更快,也更省内存。它不为中间结果分配临时数组,并将数据切分成能放入 CPU 缓存的小块进行处理。

这些数据块会分配到多个 CPU 核心上并行执行,因此计算可以利用多线程。表达式中可以使用常见数学函数,也支持字符串数组比较。若与 Intel MKL 一起编译,还可以进一步加速超越函数的计算。

相对 NumPy 的加速效果取决于表达式和数组大小,通常在大数组和较复杂的表达式上更明显。

核心功能

  • 01无需为中间结果分配临时数组即可计算数组表达式。
  • 02将计算切分为适合缓存的数据块,并分配到多个 CPU 核心。
  • 03支持常见数学函数和字符串数组比较。
  • 04可选 Intel MKL/VML 加速超越函数计算。
  • 05可通过 pip 或 conda 安装。

适用场景

  • 加速 NumPy 大数组的逐元素计算。
  • 在大数组上进行条件筛选或计算,例如 Pandas 或 PyTables 中的查询。
  • 降低数值计算代码中的内存占用。

快速上手

  1. 1

    使用 pip 从 PyPI 安装

    pip install numexpr
  2. 2

    如果使用 Anaconda 或 Miniconda,也可以用 conda 安装

    conda install numexpr
  3. 3

    对 NumPy 数组求值表达式

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

使用前须知

  • 对于非常简单的表达式加速有限,且最适合处理大数组。
  • 通过 pip 安装的 wheel 不包含 Intel MKL 支持;只有 NumPy 使用 MKL 时,conda 版本才包含。
  • 项目正在寻求资金支持,长期维护存在不确定性。

标签

常见问题

numexpr 是什么?
面向 NumPy 的快速数组表达式求值库,分块并行计算,减少内存占用。 NumExpr 用于在 NumPy 数组上求值数值表达式,例如 '3*a+4*b',相比直接用 Python 计算更快,也更省内存。它不为中间结果分配临时数组,并将数据切分成能放入 CPU 缓存的小块进行处理。
numexpr 可以免费使用吗?用的什么许可证?
numexpr 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
numexpr 还在维护吗?
活跃维护中。numexpr 最近一次提交是在 2026年10月13日。
numexpr 适合用来做什么?
加速 NumPy 大数组的逐元素计算。 在大数组上进行条件筛选或计算,例如 Pandas 或 PyTables 中的查询。 降低数值计算代码中的内存占用。
numexpr 怎么安装和运行?
使用 pip 从 PyPI 安装: pip install numexpr 如果使用 Anaconda 或 Miniconda,也可以用 conda 安装: 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

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目