ak.contents.UnionArray#
Defined in awkward.contents.unionarray on line 55.
- class ak.contents.UnionArray(self, tags, index, contents, *, parameters=None)#
UnionArray represents data drawn from an ordered list of contents
,
which can have different types, using
tags
: buffer of integers indicating which content each array element draws from.index
: buffer of integers indicating which element from the content to draw from.
UnionArrays correspond to Apache Arrow’s dense union type. Awkward Array has no direct equivalent for Apache Arrow’s sparse union type.
To illustrate how the constructor arguments are interpreted, the following is a
simplified implementation of __init__
, __len__
, and __getitem__
:
class UnionArray(Content):
def __init__(self, tags, index, contents):
assert isinstance(tags, Index8)
assert isinstance(index, (Index32, IndexU32, Index64))
assert isinstance(contents, list)
assert len(index) >= len(tags) # usually equal
for x in tags:
assert 0 <= x < len(contents)
for i, x in enumerate(tags):
assert 0 <= index[i] < len(contents[x])
self.tags = tags
self.index = index
self.contents = contents
def __len__(self):
return len(self.tags)
def __getitem__(self, where):
if isinstance(where, int):
if where < 0:
where += len(self)
assert 0 <= where < len(self)
return self.contents[self.tags[where]][self.index[where]]
elif isinstance(where, slice) and where.step is None:
return UnionArray(
self.tags[where], self.index[where], self.contents
)
elif isinstance(where, str):
return UnionArray(
self.tags, self.index, [x[where] for x in self.contents]
)
else:
raise AssertionError(where)
- ak.contents.UnionArray.tags#
- ak.contents.UnionArray.index#
- ak.contents.UnionArray.copy(self, tags=UNSET, index=UNSET, contents=UNSET, *, parameters=UNSET)#
- ak.contents.UnionArray.__copy__(self)#
- ak.contents.UnionArray.__deepcopy__(self, memo)#
- ak.contents.UnionArray.simplified(cls, tags, index, contents, *, parameters=None, mergebool=False)#
- ak.contents.UnionArray._form_with_key(self, getkey)#
- ak.contents.UnionArray._form_with_key_path(self, path)#
- ak.contents.UnionArray._to_buffers(self, form, getkey, container, backend, byteorder)#
- ak.contents.UnionArray._to_typetracer(self, forget_length)#
- ak.contents.UnionArray._touch_data(self, recursive)#
- ak.contents.UnionArray._touch_shape(self, recursive)#
- ak.contents.UnionArray.length#
- ak.contents.UnionArray.__repr__(self)#
- ak.contents.UnionArray._repr(self, indent, pre, post)#
- ak.contents.UnionArray._getitem_nothing(self)#
- ak.contents.UnionArray._is_getitem_at_placeholder(self)#
- ak.contents.UnionArray._getitem_at(self, where)#
- ak.contents.UnionArray._getitem_range(self, start, stop)#
- ak.contents.UnionArray._getitem_field(self, where, only_fields=())#
- ak.contents.UnionArray._getitem_fields(self, where, only_fields=())#
- ak.contents.UnionArray._carry(self, carry, allow_lazy)#
- ak.contents.UnionArray._union_of_optionarrays(self, index, parameters)#
- ak.contents.UnionArray.project(self, index)#
- ak.contents.UnionArray.regular_index(tags, *, backend, index_cls=Index64)#
- ak.contents.UnionArray._regular_index(self, tags)#
- ak.contents.UnionArray.nested_tags_index(offsets, counts, *, backend, tags_cls=Index8, index_cls=Index64)#
- ak.contents.UnionArray._getitem_next_jagged_generic(self, slicestarts, slicestops, slicecontent, tail)#
- ak.contents.UnionArray._getitem_next_jagged(self, slicestarts, slicestops, slicecontent, tail)#
- ak.contents.UnionArray._getitem_next(self, head, tail, advanced)#
- ak.contents.UnionArray._offsets_and_flattened(self, axis, depth)#
- ak.contents.UnionArray._mergeable_next(self, other, mergebool)#
- ak.contents.UnionArray._merging_strategy(self, others)#
- ak.contents.UnionArray._reverse_merge(self, other)#
- ak.contents.UnionArray._mergemany(self, others)#
- ak.contents.UnionArray._fill_none(self, value)#
- ak.contents.UnionArray._local_index(self, axis, depth)#
- ak.contents.UnionArray._combinations(self, n, replacement, recordlookup, parameters, axis, depth)#
- ak.contents.UnionArray._numbers_to_type(self, name, including_unknown)#
- ak.contents.UnionArray._is_unique(self, negaxis, starts, parents, outlength)#
- ak.contents.UnionArray._unique(self, negaxis, starts, parents, outlength)#
- ak.contents.UnionArray._argsort_next(self, negaxis, starts, shifts, parents, outlength, ascending, stable)#
- ak.contents.UnionArray._sort_next(self, negaxis, starts, parents, outlength, ascending, stable)#
- ak.contents.UnionArray._reduce_next(self, reducer, negaxis, starts, shifts, parents, outlength, mask, keepdims, behavior)#
- ak.contents.UnionArray._validity_error(self, path)#
- ak.contents.UnionArray._nbytes_part(self)#
- ak.contents.UnionArray._pad_none(self, target, axis, depth, clip)#
- ak.contents.UnionArray._to_arrow(self, pyarrow, mask_node, validbytes, length, options)#
- ak.contents.UnionArray._to_backend_array(self, allow_missing, backend)#
- ak.contents.UnionArray._remove_structure(self, backend, options)#
- ak.contents.UnionArray._recursively_apply(self, action, depth, depth_context, lateral_context, options)#
- ak.contents.UnionArray.to_packed(self, recursive=True)#
- ak.contents.UnionArray._to_list(self, behavior, json_conversions)#
- ak.contents.UnionArray._to_backend(self, backend)#
- ak.contents.UnionArray._is_equal_to(self, other, index_dtype, numpyarray, all_parameters)#