No Matches
Awkward Array

Awkward Array is a library for nested, variable-sized data, including arbitrary-length lists, records, mixed types, and missing data, using NumPy-like idioms.

Arrays are dynamically typed, but operations on them are compiled and fast. Their behavior coincides with NumPy when array dimensions are regular and generalizes when they’re not.

The primary documentation can be found at awkward-array.org. This sub-site documents the C++ classes in the awkward-cpp library, which awkward uses to accelerate some key algorithms.

The main parts of the C++ codebase are:

  • awkward-cpp/src/cpu-kernels: processes that iterate over all elements in an array buffer. Any Awkward Array algorithms that can't be expressed in terms of NumPy/CuPy/etc. array manipulations are implemented as Awkward kernels. Individual kernels are specified in YAML and documented here.
  • awkward-cpp/src/libawkward: other algorithms that must be implemented in C++. Currently, these are the ArrayBuilder and AwkwardForth language.
  • awkward-cpp/src/python: pybind11 bindings for libawkward classes and functions.
  • header-only/awkward: header-only files intended for inclusion in other C++ projects that create Awkward Arrays. See the code in GitHub.