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 指令集提升效能。

相關

  • 專案
  • 專案
  • 專案
  • 專案