---
{"title": "Bottleneck vs numexpr in 2026: Features and fees", "description": "Bottleneck and numexpr compared with PyOverdrive on what they do, costs, setup and questions to ask before choosing.", "url": "https://saydeploy.com/bottleneck-vs-numexpr/", "date": "2026-10-10"}
---
Bottleneck and numexpr compared with PyOverdrive on what they do, costs, setup and questions to ask before choosing.

Bottleneck is a collection of fast NumPy array functions written in C. [^1] numexpr is a fast numerical expression evaluator for Python, NumPy, Pandas, PyTables and more. [^2] PyOverdrive lets a developer patch supported NumPy functions so existing code uses faster paths while unsupported calls run on stock NumPy. [^3] Bottleneck's sources say it covers fast NumPy array functions. [^1] numexpr's sources say it covers fast numerical array expressions for NumPy. [^2] PyOverdrive's sources say it covers supported NumPy functions through its enable call. [^3]

| Option | License | Price | Install |
|---|---|---|---|
| Bottleneck | Simplified BSD license [^1] | Price not published | Binary wheels are provided for the most common platforms [^1] |
| numexpr | MIT license [^2] | Price not published | Available for install via pip for a wide range of platforms and Python versions [^2] |
| PyOverdrive | Open source under the MIT License [^3] | No paid tier or price is published in the provided claims [^3] | Installed with pip straight from the GitHub repository [^3] |

## The short answer

Bottleneck is a collection of fast NumPy array functions written in C. [^1] numexpr is a fast numerical expression evaluator for Python, NumPy, Pandas, PyTables and more. [^2] PyOverdrive lets a developer patch supported NumPy functions so existing code uses faster paths while unsupported calls run on stock NumPy. [^3]

Bottleneck's sources say it covers fast NumPy array functions. [^1] numexpr's sources say it covers fast numerical expression evaluation for NumPy. [^2] PyOverdrive's sources say it covers supported NumPy functions through its enable call. [^3]

## What Bottleneck, numexpr is built for

Bottleneck's own page describes it as a collection of fast NumPy array functions written in C. [^1] Bottleneck's page says only arrays with dtype int32, int64, float32 and float64 are accelerated. [^1] Other dtypes use slower unaccelerated functions. [^1]

numexpr's page describes it as a fast numerical array expression evaluator for Python, NumPy, Pandas, PyTables and more. [^2] Its page says expressions that operate on arrays are accelerated and use less memory than doing the same calculation in Python. [^2] Its page also states that its multi-threaded capabilities can make use of all your cores. [^2] numexpr can make use of Intel's VML (Vector Math Library). [^2]

## What PyOverdrive is built for

PyOverdrive is made by the team that publishes this site.

PyOverdrive lets a developer call pyoverdrive.enable() to patch supported NumPy functions so existing code uses faster paths, and calls it does not support run on stock NumPy. [^3] A fast path runs only when a check confirms the input is in its measured range, and anything else or a fast path that raises an error goes to stock NumPy. [^3]

PyOverdrive can compare every fast path with stock NumPy on the developer's own machine through python -m pyoverdrive --selfcheck. [^3] It can re-time threaded paths at their own thresholds on the CPU and switch off any that do not pay there through python -m pyoverdrive --calibrate. [^3]

## Pricing and fees

Bottleneck is distributed under a Simplified BSD license. [^1] The sources provided here do not publish a price for Bottleneck or numexpr.

PyOverdrive is open source under the MIT License. [^3] No paid tier or price is published in the provided PyOverdrive claims.

## Setting it up and daily use

Bottleneck provides binary wheels for the most common platforms. [^1] A source install requires Python greater than 3.9 and NumPy 1.16.0 or newer. [^1]

numexpr is available for install via pip for a wide range of platforms and Python versions. [^2]

PyOverdrive needs Python 3.12 or newer. [^3] It is installed with pip straight from the GitHub repository. [^3] The package is marked OS independent, and the test suite has been run on Windows and Linux x86-64. [^3] A developer can run python -m pyoverdrive --demo to time headline operations with stock NumPy and with PyOverdrive on the local machine. [^3]

## Things to check before you choose

Ask whether the work involves array functions, numerical expressions, or supported NumPy functions. Bottleneck's sources describe array functions. [^1] numexpr's sources describe array expressions. [^2] PyOverdrive's sources describe supported NumPy functions. [^3]

Check the data types and workloads that matter for the code. Bottleneck's sources specify the accelerated dtypes. [^1] Check the installation requirements, licensing, and whether the published setup matches the development environment.

## How to choose

If the need is a collection of fast NumPy array functions written in C, Bottleneck's page describes that use. [^1]

If the need is numerical array expression evaluation for Python and NumPy, numexpr's page describes that use. [^2]

If the need is to patch supported NumPy functions while keeping unsupported calls on stock NumPy, PyOverdrive's claims describe that approach. [^3] If the need is to inspect which path a call would take without running it, PyOverdrive's explain function provides that information. [^3]

## Frequently asked questions

### Is Bottleneck a NumPy acceleration library?

Bottleneck's page describes it as a collection of fast NumPy array functions written in C. [^1] Its page says only arrays with dtype int32, int64, float32 and float64 are accelerated. [^1] Check the array types and functions needed before choosing it for a project.

### What does numexpr do for NumPy work?

numexpr's page describes it as a fast numerical expression evaluator for Python, NumPy, Pandas, PyTables and more. [^2] Its page says array expressions are accelerated and use less memory than doing the same calculation in Python. [^2] Check whether the needed work is expressed as supported array calculations.

### How does PyOverdrive change NumPy use?

PyOverdrive lets a developer call pyoverdrive.enable() to patch supported NumPy functions so existing code uses faster paths, while unsupported calls run on stock NumPy. [^3] A fast path only runs after a check confirms the input is in its measured range. [^3]

### Can PyOverdrive check its paths before use?

PyOverdrive can compare every fast path with stock NumPy on the developer's own machine through python -m pyoverdrive --selfcheck. [^3] The explain function tells which path a call would take and why without running the call. [^3]

### How to choose between Bottleneck, numexpr and PyOverdrive?

Choose based on the type of work described by each source. Bottleneck describes fast NumPy array functions. [^1] numexpr describes numerical array expression evaluation. [^2] PyOverdrive describes supported NumPy function patching with fallback behavior. [^3]

It is open source under the MIT License. [^3] - [Visit PyOverdrive](/go/bottleneck-vs-numexpr)

## Sources

[^1]: Bottleneck, github.com/pydata/bottleneck, read 2026-10-07 (https://github.com/pydata/bottleneck)
[^2]: numexpr, github.com/pydata/numexpr, read 2026-10-07 (https://github.com/pydata/numexpr)
[^3]: PyOverdrive's own description of itself (the product of this site's publisher) (/go/bottleneck-vs-numexpr)
