Skip to main content

An example of using numpy with pybind11

Project description

pybind11-numpy-example

License: MIT PyPI Release Python Versions GitHub Workflow Status Documentation Status

What

A simple example of how to use pybind11 with numpy.

This C++/Python library creates a std::vector of 16-bit ints, and provides a Python interface to the contents of this vector in a few different ways:

  • a Python List (copy the data)
  • a NumPy ndarray (copy the data).
  • a NumPy ndarray (move the data).

Why

Python Lists are great! However, when storing many small elements of the same type, a Numpy array is much faster and uses a lot less memory:

Memory used vs number of elements

Time used vs number of elements

How

The pybind11 code is in src/pybind11_numpy_example_python.cpp.

The python package is defined in pyproject.toml and uses scikit-build-core.

Each tagged commit triggers a GitHub action job which uses cibuildwheel to build and upload wheels to PyPI.

The scripts used to generate the above plots are in scripts.

This repo was quickly set up using the SSC C++ Project Cookiecutter.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pybind11_numpy_example-0.0.11.tar.gz (86.8 kB view hashes)

Uploaded Source

Built Distributions

pybind11_numpy_example-0.0.11-pp310-pypy310_pp73-win_amd64.whl (60.7 kB view hashes)

Uploaded PyPy Windows x86-64

pybind11_numpy_example-0.0.11-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (52.2 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

pybind11_numpy_example-0.0.11-pp39-pypy39_pp73-win_amd64.whl (60.7 kB view hashes)

Uploaded PyPy Windows x86-64

pybind11_numpy_example-0.0.11-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (52.1 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

pybind11_numpy_example-0.0.11-pp38-pypy38_pp73-win_amd64.whl (60.8 kB view hashes)

Uploaded PyPy Windows x86-64

pybind11_numpy_example-0.0.11-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (52.2 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

pybind11_numpy_example-0.0.11-pp37-pypy37_pp73-win_amd64.whl (60.6 kB view hashes)

Uploaded PyPy Windows x86-64

pybind11_numpy_example-0.0.11-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (51.7 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

pybind11_numpy_example-0.0.11-cp312-cp312-win_amd64.whl (61.0 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

pybind11_numpy_example-0.0.11-cp312-cp312-win32.whl (54.4 kB view hashes)

Uploaded CPython 3.12 Windows x86

pybind11_numpy_example-0.0.11-cp312-cp312-musllinux_1_1_x86_64.whl (604.3 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

pybind11_numpy_example-0.0.11-cp312-cp312-musllinux_1_1_i686.whl (661.5 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ i686

pybind11_numpy_example-0.0.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (81.1 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pybind11_numpy_example-0.0.11-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (86.0 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

pybind11_numpy_example-0.0.11-cp312-cp312-macosx_10_9_x86_64.whl (52.0 kB view hashes)

Uploaded CPython 3.12 macOS 10.9+ x86-64

pybind11_numpy_example-0.0.11-cp311-cp311-win_amd64.whl (61.7 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

pybind11_numpy_example-0.0.11-cp311-cp311-win32.whl (53.7 kB view hashes)

Uploaded CPython 3.11 Windows x86

pybind11_numpy_example-0.0.11-cp311-cp311-musllinux_1_1_x86_64.whl (605.5 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

pybind11_numpy_example-0.0.11-cp311-cp311-musllinux_1_1_i686.whl (662.1 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

pybind11_numpy_example-0.0.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (81.7 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pybind11_numpy_example-0.0.11-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (86.2 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

pybind11_numpy_example-0.0.11-cp311-cp311-macosx_10_9_x86_64.whl (53.3 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

pybind11_numpy_example-0.0.11-cp310-cp310-win_amd64.whl (60.9 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

pybind11_numpy_example-0.0.11-cp310-cp310-win32.whl (52.4 kB view hashes)

Uploaded CPython 3.10 Windows x86

pybind11_numpy_example-0.0.11-cp310-cp310-musllinux_1_1_x86_64.whl (604.4 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

pybind11_numpy_example-0.0.11-cp310-cp310-musllinux_1_1_i686.whl (660.8 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

pybind11_numpy_example-0.0.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (79.9 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pybind11_numpy_example-0.0.11-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (84.9 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

pybind11_numpy_example-0.0.11-cp310-cp310-macosx_10_9_x86_64.whl (52.0 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

pybind11_numpy_example-0.0.11-cp39-cp39-win_amd64.whl (60.5 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

pybind11_numpy_example-0.0.11-cp39-cp39-win32.whl (52.7 kB view hashes)

Uploaded CPython 3.9 Windows x86

pybind11_numpy_example-0.0.11-cp39-cp39-musllinux_1_1_x86_64.whl (604.3 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

pybind11_numpy_example-0.0.11-cp39-cp39-musllinux_1_1_i686.whl (660.9 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

pybind11_numpy_example-0.0.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (79.9 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pybind11_numpy_example-0.0.11-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (85.0 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

pybind11_numpy_example-0.0.11-cp39-cp39-macosx_10_9_x86_64.whl (52.1 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

pybind11_numpy_example-0.0.11-cp38-cp38-win_amd64.whl (60.8 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

pybind11_numpy_example-0.0.11-cp38-cp38-win32.whl (52.5 kB view hashes)

Uploaded CPython 3.8 Windows x86

pybind11_numpy_example-0.0.11-cp38-cp38-musllinux_1_1_x86_64.whl (604.3 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

pybind11_numpy_example-0.0.11-cp38-cp38-musllinux_1_1_i686.whl (660.5 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

pybind11_numpy_example-0.0.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (79.8 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pybind11_numpy_example-0.0.11-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (84.8 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

pybind11_numpy_example-0.0.11-cp38-cp38-macosx_10_9_x86_64.whl (51.9 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

pybind11_numpy_example-0.0.11-cp37-cp37m-win_amd64.whl (61.5 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

pybind11_numpy_example-0.0.11-cp37-cp37m-win32.whl (53.5 kB view hashes)

Uploaded CPython 3.7m Windows x86

pybind11_numpy_example-0.0.11-cp37-cp37m-musllinux_1_1_x86_64.whl (605.5 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

pybind11_numpy_example-0.0.11-cp37-cp37m-musllinux_1_1_i686.whl (662.4 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

pybind11_numpy_example-0.0.11-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (80.5 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

pybind11_numpy_example-0.0.11-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (85.1 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

pybind11_numpy_example-0.0.11-cp37-cp37m-macosx_10_9_x86_64.whl (51.9 kB view hashes)

Uploaded CPython 3.7m macOS 10.9+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page