跳转到主要内容

使用numpy与pybind11的示例

项目描述

pybind11-numpy-example

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

什么

这是一个使用pybind11numpy的简单示例,以及如何将其作为库发布到PyPIconda-forge

这个C++/Python库创建了一个16位整数的std::vector,并以几种不同的方式提供Python接口访问这个向量的内容

  • 一个Python 列表(复制数据)
  • 一个NumPy ndarray(复制数据)。
  • 一个NumPy ndarray(移动数据)。

为什么

Python列表很棒!然而,当存储大量相同类型的小元素时,NumPy数组要快得多,并且使用的内存也少得多。

Memory used vs number of elements

Time used vs number of elements

如何

pybind11代码在src/pybind11_numpy_example_python.cpp中。

python包在pyproject.toml中定义,并使用scikit-build-core

每个标记的提交都会触发一个GitHub动作工作,该工作使用cibuildwheel来构建和上传一个新版本,包括所有平台的二进制轮文件到PyPI

conda-forge包是从这个配方生成的,并且在将新版本上传到PyPI时自动更新。

用于生成上述图的脚本在scripts中。

该仓库是使用SSC的C++ Project Cookiecutter快速设置的。

由以下支持