SayDeploy Plain comparisons of developer tools, AI coding tools included

Best NumPy acceleration libraries for scientific Python users

Compare Numba, numexpr, Cython, Bottleneck, JAX, CuPy, Pythran, Dask, dpnp and PyOverdrive for NumPy speed, with questions to ask before you choose.

By SayDeploy ยท

SayDeploy is published by LunarWerx, which makes some of the tools compared here.

Choose by the kind of array work you do, and check the system and Python version you run. Numba translates Python functions to optimized machine code at runtime. [1] Numexpr accelerates array expressions and uses less memory than the same calculation in plain Python. [2] CuPy is an open-source array library for GPU computing with Python. [3] PyOverdrive makes supported NumPy functions run faster versions after a single switch-on step. [4]

OptionWhat its source says it doesPlatforms or what it needs
NumbaOpen source compiler that translates a subset of Python and NumPy code into fast machine code. [1]Intel and AMD x86, POWER8/9, and ARM CPUs including Apple M1; supports Python 3.9-3.12. [1] [1]
numexprFast numerical array expression evaluator for Python, NumPy, Pandas, PyTables and more. [2]Installable via pip for a wide range of platforms and Python versions; MIT license. [2] [2]
BottleneckCollection of fast NumPy array functions written in C. [5]Accelerates only int32, int64, float32 and float64 arrays; source install requires Python greater than 3.9 and NumPy 1.16.0 or later. [5] [5]
CuPyOpen-source GPU array library for Python, usable in most cases as a drop-in replacement. [3] [3]Precompiled packages for Linux and Windows. [3]
PyOverdriveFaster versions of supported NumPy functions after a single switch-on step, with calls falling back to the original NumPy. [4] [4]Needs Python 3.12 or newer; installed with pip from the GitHub repository; tests run on Windows and Linux x86-64. [4] [4] [4]

What scientific Python users need from NumPy acceleration libraries

Scientific Python users usually have arrays that are too large or too slow for a plain NumPy call to finish in a sensible time. The common jobs are repeated arithmetic on big arrays, long chains of expressions that create temporary arrays in memory, reductions across an axis, and loops that cannot be written as one NumPy call.

Two limits shape the choice. The first is hardware: some tools use the processor's cores, and some use an NVIDIA graphics card. The second is data type. Some tools speed up only certain array types, and other types fall back to slower code.

Code that already works matters too. Some tools ask you to restructure functions, and others leave them as they are. Check the Python version each tool supports, since your project may be pinned to an older one.

Numba for scientific Python users

Numba is an open source compiler, and its page says it translates a subset of Python and NumPy code into fast machine code. [1] Its page says numerical algorithms compiled this way can approach the speeds of C or FORTRAN. [1] It is designed to be used with NumPy arrays and functions. [1]

It works with Jupyter notebooks and with distributed frameworks such as Dask and Spark. [1] It supports Python 3.9-3.12. [1] With support for NVIDIA CUDA, it lets you write parallel GPU algorithms entirely from Python. [1]

numexpr for scientific Python users

numexpr is a fast numerical array expression evaluator for Python, NumPy, Pandas, PyTables and more. [2] Its page says expressions that operate on arrays, such as 3a+4b, are accelerated and use less memory than the same calculation in plain Python. [2] Its multi-threaded capabilities can make use of all your cores. [2]

The page also says it can make use of Intel's VML (Vector Math Library). [2] It is available for install via pip across a wide range of platforms and Python versions. [2]

Bottleneck for scientific Python users

Its page says precompiled packages, called wheels, are provided on PyPI for the most common platforms. [5]

A benchmark suite comes with it. [5] It is distributed under a Simplified BSD license. [5] A source install requires Python greater than 3.9 and NumPy 1.16.0 or later. [5]

CuPy for scientific Python users

CuPy is an open-source array library for GPU-accelerated computing with Python. [3] It provides precompiled packages, called wheels, for Linux and Windows. [3]

The page says it speeds up some operations more than 100X. [3]

PyOverdrive for scientific Python users

PyOverdrive is made by the team that publishes this site. A single switch-on step makes supported NumPy functions run faster versions, and calls to unsupported functions run on the original NumPy. [4]

A faster version runs only when a check confirms that the input falls in its measured range. [4] Anything else, or a faster version that raises an error, goes to the original NumPy. [4] Threaded versions of sin, cos, tan, exp, log, log10 and tanh run on C-contiguous float64 and float32 arrays above a minimum size set for each operation and data type, between 3e5 and 3e6 elements. [4]

A built-in check compares each faster version with the original NumPy on your own machine. [4] A built-in demo times the headline operations with the original NumPy and with the product on your machine, and takes about 20 seconds. [4] It is open source under the MIT License. [4]

Matching the tool to the job

If your work is a long expression over large arrays, such as several multiplications and additions on the same arrays, the numexpr page describes accelerated expressions that use less memory than plain Python. [2] Threaded versions of functions such as sin, cos, exp and log also run on large float arrays, once they pass the size minimum described above. [4]

If you need a Python function or loop compiled to machine code, Numba's page describes that job for the subset of Python and NumPy it supports. [1]

If the work must run on a GPU, check CuPy, whose page describes it as an open-source array library for GPU computing. [3] If you have large stacks of small matrices, PyOverdrive lists a QR path for 3x3 matrices that handles the whole stack in one step, benchmarked at 10k matrices. [4] If you want existing NumPy code to run faster without rewriting it, PyOverdrive's switch-on step patches supported NumPy functions so your existing code uses faster paths. [4]

Tools not described on this page should be checked on their own pages before you rule them in or out.

Questions to ask before you choose

Which operating system and processor will the code run on? PyOverdrive's tests have been run on Windows and on Linux x86-64. [4]

Which Python version does your project use? PyOverdrive needs Python 3.12 or newer. [4] Numba's page lists support for Python 3.9-3.12. [1]

Which data types do your arrays hold? Check each tool's page for the data types it covers before you choose.

Does your work need a GPU, or can the cores of one machine handle it? Does the license of the tool matter for your project? PyOverdrive is open source under the MIT License. [4] Bottleneck is distributed under a Simplified BSD license. [5]

Frequently asked questions

Which NumPy acceleration library works on a GPU?

CuPy is an open-source array library for GPU computing with Python. [3] It provides precompiled packages for Linux and Windows. [3] Numba also supports NVIDIA CUDA, which its page says lets you write parallel GPU algorithms entirely from Python. [1] Check which GPU and system your work runs on before you choose.

Does PyOverdrive change how existing NumPy code is written?

A single switch-on step makes supported NumPy functions run faster versions, and calls to unsupported functions run on the original NumPy. [4] A faster version runs only when a check confirms that the input falls in its measured range, and anything else goes to the original NumPy. [4] A built-in check compares each faster version with the original NumPy on your own machine. [4]

Which Python version does PyOverdrive need?

PyOverdrive needs Python 3.12 or newer. [4] Its version is 1.0.0, and its status is Beta. [4] You install it with pip straight from the GitHub repository. [4] Its tests have been run on Windows and on Linux x86-64, and the package is marked OS independent. [4] If your project pins an older Python, check that before you start.

Which processors does Numba support?

It supports Python 3.9 to 3.12. [1] The page also says it works with Jupyter notebooks and with distributed frameworks such as Dask and Spark. [1] Numba is designed to be used with NumPy arrays and functions. [1] Check your processor and Python version against these before you choose.

Does Bottleneck accelerate every NumPy array type?

Its page says precompiled packages, called wheels, are provided on PyPI for the most common platforms. [5] A benchmark suite comes with it. [5] If your arrays use other types, check the speed of those calls on your own data before you choose.

It is open source under the MIT License. [4]

Try PyOverdrive

Sources

  1. Numba, numba.pydata.org, read 2026-10-07
  2. numexpr, github.com/pydata/numexpr, read 2026-10-07
  3. CuPy, cupy.dev, read 2026-10-07
  4. PyOverdrive's own description of itself (the product of this site's publisher)
  5. Bottleneck, github.com/pydata/bottleneck, read 2026-10-07

Related comparisons