ak.to_packed#

Defined in awkward.operations.ak_to_packed on line 15.

ak.to_packed(array, *, highlevel=True, behavior=None, attrs=None)#
Parameters:
  • array – Array-like data (anything ak.to_layout recognizes).

  • highlevel (bool) – If True, return an ak.Array; otherwise, return a low-level ak.contents.Content subclass.

  • behavior (None or dict) – Custom ak.behavior for the output array, if high-level.

  • attrs (None or dict) – Custom attributes for the output array, if high-level.

Returns an array with the same type and values as the input, but with packed inner structures:

Example

>>> a = ak.Array([[1, 2, 3], [], [4, 5], [6], [7, 8, 9, 10]])
>>> b = a[::-1]
>>> b.layout
<ListArray len='5'>
    <starts><Index dtype='int64' len='5'>
        [6 5 3 3 0]
    </Index></starts>
    <stops><Index dtype='int64' len='5'>
        [10  6  5  3  3]
    </Index></stops>
    <content><NumpyArray dtype='int64' len='10'>
        [ 1  2  3  4  5  6  7  8  9 10]
    </NumpyArray></content>
</ListArray>
>>> c = ak.to_packed(b)
>>> c.layout
<ListOffsetArray len='5'>
    <offsets><Index dtype='int64' len='6'>[ 0  4  5  7  7 10]</Index></offsets>
    <content><NumpyArray dtype='int64' len='10'>
        [ 7  8  9 10  6  4  5  1  2  3]
    </NumpyArray></content>
</ListOffsetArray>

Performing these operations will minimize the output size of data sent to ak.to_buffers (though conversions through Arrow, ak.to_arrow and ak.to_parquet, do not need this because packing is part of that conversion).

See also ak.to_buffers.