xtensor-stack/xtensor

C++ tensors with broadcasting and lazy computing

解决的问题

xtensor 是一个用于数值分析的 C++ 库,采用多维数组表达式。它将 NumPy 类似的功能引入 C++,使开发者能够在避免 Python 开销的同时,对数组执行复杂的数学运算,同时为来自 Python 生态系统的用户保留熟悉的 API。

工作原理

该库使用可扩展的表达式系统实现 延迟广播。操作(如加法或正弦函数)不会立即计算结果,而是返回一个 xexpression 对象。实际值仅在访问结果或将其赋值给 xarrayxtensor 等容器时才计算。

它提供两种主要容器类型:

  • xarray:一种可在运行时重塑的动态容器,类似于 NumPy 数组。
  • xtensor:维度在编译时确定的容器,允许将形状和步长栈分配,从而提升性能。

适用人群

适用于需要多维数组操作和广播功能的 C++ 开发者,包括从事数值分析、数据科学或高性能计算的人员。

主要亮点

  • NumPy 风格 API:遵循 C++ 标准库的惯用法,同时模仿 NumPy 的数组编程模型。
  • 延迟计算:仅在访问时评估表达式,减少不必要的计算。
  • 广播:支持遵循 NumPy 规则的、不同形状数组之间的元素级操作。
  • 互操作性:通过适配器可原地处理 NumPy、Julia 和 R 数据结构。
  • SIMD 加速:与 xsimd 集成,利用 SSE、AVX、AVX512 和 Neon 指令集提升性能。

相关

  • 项目
  • 项目
  • 项目
  • 项目