Best NumPy acceleration libraries for data scientists in 2026
Compare Numba, numexpr, Cython, Bottleneck, JAX, CuPy, Pythran and PyOverdrive for speeding up NumPy work, with questions to ask first.
SayDeploy is published by LunarWerx, which makes some of the tools compared here.
Compare Numba, numexpr, Cython, Bottleneck, JAX, CuPy, Pythran and PyOverdrive for changing how fast NumPy work runs, with questions to ask before you pick one. PyOverdrive enables faster paths for supported NumPy functions so existing code runs faster, and calls it does not support fall back to stock NumPy. [1] Check each option's section and the table for what its source says it does.
| Option | What its source says it does | Where it runs or what it needs |
|---|---|---|
| Numba | Open source JIT compiler that translates a subset of Python and NumPy code into fast machine code. [2] | Supports Intel and AMD x86, POWER8/9, and ARM CPUs including Apple M1; Python 3.9-3.12. [2] [2] |
| numexpr | Fast numerical expression evaluator for NumPy; array expressions are accelerated and use less memory. [3] [3] | Multi-threaded and can use all cores; available via pip for a wide range of platforms and Python versions. [3] [3] |
| Cython | Optimising static compiler for Python and the extended Cython language. [4] | Cython 3.0.x supports Python 2.7 / 3.5 and later. [4] |
| Bottleneck | Collection of fast NumPy array functions written in C. [5] | Only int32, int64, float32 and float64 arrays are accelerated. [5] |
| JAX | Uses XLA to compile and scale NumPy programs on TPUs, GPUs and other hardware accelerators. [6] | CPU install command is pip install -U jax. [6] |
| CuPy | Open-source array library for GPU-accelerated computing with Python; in most cases a drop-in replacement. [7] [7] | Provides wheels for Linux and Windows. [7] |
| Pythran | Ahead of time compiler for a subset of the Python language, with a focus on scientific computing. [8] | Supports Python 3.7 and upward only; uses multi-cores and SIMD. [8] [8] |
| PyOverdrive | Patches supported NumPy functions so existing code uses faster paths; unsupported calls go to stock NumPy. [1] | Open source under the MIT License; needs Python 3.12 or newer. [1] [1] |
What data scientists need from NumPy acceleration libraries
A data scientist spends much of the day moving numbers through NumPy: reshaping arrays, running math element by element, fitting small linear systems, and grouping values. The real jobs are making an existing pipeline finish sooner, keeping results close to stock NumPy, and not rewriting working code to get the speed. A library only helps if it fits the code you already run.
The limits are practical. Some tools ask you to rewrite code in another style, like decorating a function or compiling a separate file. Some cover only certain operations or array shapes, so a speed gain on one task tells you nothing about another. Several tools assume hardware you may not have, such as a GPU. Some need a newer Python or a specific operating system. A tool that fits one part of a pipeline may do nothing for the rest, and the reverse is also true. The sections below say what each source states and nothing more.
Numba for data scientists
Numba is an open source JIT compiler that translates a subset of Python and NumPy code into fast machine code. [2] It supports Python 3.9-3.12. [2]
numexpr for data scientists
NumExpr is a fast numerical expression evaluator for NumPy. [3] It is distributed under the MIT license. [3] It is available for install via pip for a wide range of platforms and Python versions. [3]
Cython for data scientists
Cython is an optimising static compiler for both the Python programming language and the extended Cython programming language. The latest stable release of Cython is 3.2.9, released 2026-07-24. [4] Cython 3.0.x supports Python 2.7 / 3.5 and later. [4]
Support for the CPython Limited API and free-threading CPython is available in Cython 3.1 but considered experimental. [4] Cython is freely available under the open source Apache 2.0 License. [4]
Bottleneck for data scientists
Bottleneck comes with a benchmark suite. [5] Source install requires Python >3.9 and NumPy 1.16.0+. [5] It is distributed under a Simplified BSD license. [5]
JAX for data scientists
JAX is licensed under Apache-2.0. [6]
Its page notes this is a research project, not an official Google product. [6]
PyOverdrive for data scientists
PyOverdrive is made by the team that publishes this site. Calling pyoverdrive.enable() patches supported NumPy functions so your existing code uses faster paths, and calls it does not support run on stock NumPy. [1] A fast path runs only when a check confirms the input is in its measured range; anything else, or a fast path that raises an error, goes to stock NumPy. [1]
Threaded paths for np.sin, cos, tan, exp, log, log10 and tanh on C-contiguous float64/float32 arrays run above a size floor calibrated per operation and dtype. [1] np.linalg.qr on large stacks of 3x3 matrices uses a vectorized closed-form Householder, and np.linalg.eigvalsh has closed-form 2x2 and 3x3 paths for float batches above a size threshold. [1] Large np.einsum calls are sent through NumPy's own optimize=True planner once they pass a measured size threshold. [1] np.isin on 1-D StringDType or object arrays can use hash-set membership instead of the default method. [1]
PyOverdrive is open source under the MIT License. [1] The package is marked OS independent, and the test suite has been run on Windows and on Linux x86-64. [1] It needs Python 3.12 or newer. [1] You install it with pip straight from the GitHub repository. [1] The version is 1.0.0 and its status is Beta. [1]
Matching the tool to the job
For code you do not want to rewrite, PyOverdrive patches supported NumPy functions in place, and a fast path runs only when a check confirms the input is in its measured range, with anything else going to stock NumPy. [1] [1] Its selfcheck compares every fast path with stock NumPy on your own machine, and its demo times the headline operations with stock NumPy and with PyOverdrive. [1] [1]
For functions you can rewrite, Numba is an open source JIT compiler that translates a subset of Python and NumPy code into fast machine code. [2] For array expressions, NumExpr is a fast numerical expression evaluator for NumPy. [3] For whole pipelines you are willing to rewrite in a different API, check whether JAX fits the hardware you have. For a GPU, CuPy speeds up some operations more than 100X. [7]
Questions to ask before you choose
Which operations are actually run? Cython needs code compiled in the extended Cython language. Check whether the operations and dtypes you use are covered by the tool you are considering.
Does the tool have the hardware or Python version it needs? Numba supports Python 3.9-3.12. [2] PyOverdrive needs Python 3.12 or newer. [1] CuPy is an open-source array library for GPU-accelerated computing with Python. [7] Check what your machine and your Python support.
How to trust the speed gain? PyOverdrive compares every fast path with stock NumPy on your own machine through selfcheck, and calibrate re-times the threaded paths at their own thresholds on your CPU and switches off any that do not pay there. [1] [1] Bottleneck ships a built-in benchmark suite. [5] Ask how you can verify the gain on your own data and your own machine.
Frequently asked questions
### Which NumPy acceleration library is free and open source?
NumExpr is distributed under the MIT license. [3] Cython is freely available under the open source Apache 2.0 License. [4] JAX is licensed under Apache-2.0. [6] Bottleneck is distributed under a Simplified BSD license. [5] PyOverdrive is open source under the MIT License. [1] Check the licence of each tool against your own constraints.
### Does Bottleneck accelerate all NumPy array dtypes?
Check the Bottleneck page for which array data types it accelerates and how other dtypes are handled. If your data uses types outside that set, check whether this collection covers the types you actually work with.
### Does PyOverdrive change existing NumPy code?
PyOverdrive lets existing code use faster paths by calling pyoverdrive.enable(), which patches supported NumPy functions, and calls it does not support run on stock NumPy. [1] A fast path runs only when a check confirms the input is in its measured range. [1] Any given path can be turned off with disable_path() or PYOVERDRIVE_DISABLE, and pyoverdrive.disable() restores the original NumPy functions. [1]
### How can you check that an acceleration library is actually faster on your data?
PyOverdrive's selfcheck compares every fast path with stock NumPy on your own machine. [1] Its explain() tells you which path a call would take and why without running the call. [1] Bottleneck comes with a benchmark suite. [5] Ask any tool how you can measure the difference for the operations you run.
### Does PyOverdrive need a GPU or special hardware?
PyOverdrive's threaded paths run on C-contiguous float64/float32 arrays. [1] The package is marked OS independent and the test suite has been run on Windows and on Linux x86-64. [1] CuPy, by contrast, is an array library for GPU-accelerated computing. [7] Check what hardware each tool expects before you choose.
Frequently asked questions
Which NumPy acceleration library is free and open source?
NumExpr is distributed under the MIT license. [3] Cython is freely available under the open source Apache 2.0 License. [4] JAX is licensed under Apache-2.0. [6] Bottleneck is distributed under a Simplified BSD license. [5] Pythran is BSD-3-Clause licensed. [8] PyOverdrive is open source under the MIT License. [1] Check the licence of each tool against your own constraints.
Does Bottleneck accelerate all NumPy array dtypes?
Check the Bottleneck page for which array data types it accelerates and how other dtypes are handled. If your data uses types outside that set, check whether this collection covers the types you actually work with.
Does PyOverdrive change existing NumPy code?
PyOverdrive lets existing code use faster paths by calling pyoverdrive.enable(), which patches supported NumPy functions, and calls it does not support run on stock NumPy. [1] A fast path runs only when a check confirms the input is in its measured range. [1] Any given path can be turned off with disable_path() or PYOVERDRIVE_DISABLE, and pyoverdrive.disable() restores the original NumPy functions. [1]
How can you check that an acceleration library is faster on your own data?
PyOverdrive's selfcheck compares every fast path with stock NumPy on your own machine. [1] Its explain() tells you which path a call would take and why without running the call. [1] Bottleneck comes with a benchmark suite. [5] Ask any tool how you can measure the difference for the operations you run.
Does PyOverdrive need a GPU or special hardware?
PyOverdrive's threaded paths run on C-contiguous float64/float32 arrays. [1] The package is marked OS independent and the test suite has been run on Windows and on Linux x86-64. [1] CuPy, by contrast, is an array library for GPU-accelerated computing. [7] Check what hardware each tool expects before you choose.
It is open source under the MIT License. [1]
Try PyOverdriveSources
- PyOverdrive's own description of itself (the product of this site's publisher)
- Numba, numba.pydata.org, read 2026-10-07
- numexpr, github.com/pydata/numexpr, read 2026-10-07
- Cython, cython.org, read 2026-10-07
- Bottleneck, github.com/pydata/bottleneck, read 2026-10-07
- JAX, github.com/jax-ml/jax, read 2026-10-07
- CuPy, cupy.dev, read 2026-10-07
- Pythran, github.com/serge-sans-paille/pythran, read 2026-10-07
Related comparisons
- Best NumPy acceleration libraries in 2026
- Bottleneck alternatives in 2026 for NumPy speed
- CuPy alternatives in 2026 for NumPy acceleration
- Cython alternatives in 2026 for NumPy code
- Best CSV import and field mapping tools for developers in 2026
- Best Git GUI clients for developers with many repos in 2026
- Best local dev server managers for full-stack developers in 2026
- AnatomyOf vs Codecademy in 2026: Pricing, Setup and Features
- AnatomyOf vs DevDocs in 2026: Pricing, Setup, Features
- AnatomyOf vs Exercism in 2026: Pricing, Setup and Features