xtensor-stack/xtensor
C++ tensors with broadcasting and lazy computing
解决的问题
xtensor 是一个用于数值分析的 C++ 库,采用多维数组表达式。它将 NumPy 类似的功能引入 C++,使开发者能够在避免 Python 开销的同时,对数组执行复杂的数学运算,同时为来自 Python 生态系统的用户保留熟悉的 API。
工作原理
该库使用可扩展的表达式系统实现 延迟广播。操作(如加法或正弦函数)不会立即计算结果,而是返回一个 xexpression 对象。实际值仅在访问结果或将其赋值给 xarray 或 xtensor 等容器时才计算。
它提供两种主要容器类型:
xarray:一种可在运行时重塑的动态容器,类似于 NumPy 数组。xtensor:维度在编译时确定的容器,允许将形状和步长栈分配,从而提升性能。
适用人群
适用于需要多维数组操作和广播功能的 C++ 开发者,包括从事数值分析、数据科学或高性能计算的人员。
主要亮点
- NumPy 风格 API:遵循 C++ 标准库的惯用法,同时模仿 NumPy 的数组编程模型。
- 延迟计算:仅在访问时评估表达式,减少不必要的计算。
- 广播:支持遵循 NumPy 规则的、不同形状数组之间的元素级操作。
- 互操作性:通过适配器可原地处理 NumPy、Julia 和 R 数据结构。
- SIMD 加速:与
xsimd集成,利用 SSE、AVX、AVX512 和 Neon 指令集提升性能。
相关
- 项目
- 项目
- 项目
- 项目