Repolode
pydata

pydata/numexpr

NumPy配列の式をチャンク単位で評価し、メモリ使用量を抑えながらマルチコアで高速に計算します。

スター
2,544
フォーク
233
未解決の Issue
18
最終コミット
7 日前

これは何?

NumExprは、'3*a+4*b'のようなNumPy配列の数値式を評価します。同じ計算を通常のPythonで行うより高速で、メモリ使用量も抑えられます。中間結果用の一時配列を作らず、CPUキャッシュに収まるサイズの小さなチャンクに分けてデータを処理します。

チャンクは利用可能なCPUコアに分散されるため、複数スレッドで計算を並列化できます。一般的な数学関数や、文字列配列の比較にも対応しています。MKLを使ってビルドすると、Intel MKL/VMLのサポートにより超越関数をさらに高速化できます。

NumPyに対する高速化の度合いは式や配列のサイズによって異なります。プロジェクトによると、一般に配列が大きく、式が複雑なほど効果が大きくなります。

主な機能

  • 01中間結果用の一時配列を作らずに、配列の式を評価します。
  • 02処理をキャッシュに収まるサイズのチャンクに分割し、CPUコアに分散します。
  • 03一般的な数学関数と文字列配列の比較に対応しています。
  • 04超越関数を高速化するIntel MKL/VMLのオプションサポート。
  • 05pipまたは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のサポートが含まれていません。MKLが利用できるのは、NumPyがMKLを使用する場合のcondaビルドのみです。
  • プロジェクトは今後の運営資金を募っているため、長期的なメンテナンスは不確実です。

トピック

よくある質問

numexpr とは?
NumPy配列の式をチャンク単位で評価し、メモリ使用量を抑えながらマルチコアで高速に計算します。 NumExprは、'3*a+4*b'のようなNumPy配列の数値式を評価します。同じ計算を通常の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

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト