ak.unzip#
Defined in awkward.operations.ak_unzip on line 16.
- ak.unzip(array, *, how=tuple, highlevel=True, behavior=None, attrs=None)#
- Parameters:
array – Array-like data (anything
ak.to_layout
recognizes).how (type) – The type of the returned output. This can be
tuple
ordict
.highlevel (bool) – If True, return an
ak.Array
; otherwise, return a low-levelak.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.
If the array
contains tuples or records, this operation splits them
into a Python tuple (or dict) of arrays, one for each field.
If the array
does not contain tuples or records, the single array
is placed in a length 1 Python tuple (or dict).
For example,
>>> array = ak.Array([{"x": 1.1, "y": [1]},
... {"x": 2.2, "y": [2, 2]},
... {"x": 3.3, "y": [3, 3, 3]}])
>>> x, y = ak.unzip(array)
>>> x
<Array [1.1, 2.2, 3.3] type='3 * float64'>
>>> y
<Array [[1], [2, 2], [3, 3, 3]] type='3 * var * int64'>
The how
argument determines the structure of the output. Using how=dict
returns a dictionary of arrays instead of a tuple, and let’s you round-trip
through ak.zip
:
>>> array = ak.Array([{"x": 1.1, "y": [1]},
... {"x": 2.2, "y": [2, 2]},
... {"x": 3.3, "y": [3, 3, 3]}])
>>> x = ak.unzip(array, how=dict)
>>> x
{'x': <Array [1.1, 2.2, 3.3] type='3 * float64'>,
'y': <Array [[1], [2, 2], [3, 3, 3]] type='3 * var * int64'>}
>>> assert ak.zip(ak.unzip(array, how=dict), depth_limit=1).to_list() == array.to_list() # True