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.
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]
| Option | What its source says it does | Platforms or what it needs |
|---|---|---|
| Numba | Open 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] |
| numexpr | Fast 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] |
| Bottleneck | Collection 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] |
| CuPy | Open-source GPU array library for Python, usable in most cases as a drop-in replacement. [3] [3] | Precompiled packages for Linux and Windows. [3] |
| PyOverdrive | Faster 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 PyOverdriveSources
Related comparisons
- Best NumPy acceleration libraries in 2026
- Best NumPy acceleration libraries for data scientists in 2026
- Best NumPy acceleration libraries for quant analysts in 2026
- Bottleneck alternatives in 2026 for NumPy speed
- Bottleneck vs CuPy in 2026: Pricing, Setup and Features
- Bottleneck vs Cython in 2026: Pricing, Setup, Features
- Bottleneck vs Dask in 2026: NumPy Acceleration Compared
- Bottleneck vs dpnp in 2026: Pricing, Setup and Features
- Bottleneck vs JAX in 2026: Pricing, Setup and Features
- Bottleneck vs numexpr in 2026: Features and fees