ak.contents.RecordArray — Awkward Array 2.8.2 documentation (original) (raw)

Defined in awkward.contents.recordarray on line 113.

class ak.contents.RecordArray(self, contents, fields, length=None, *, parameters=None, backend=None)#

RecordArray represents an array of tuples or records, all with the same type. Its contents is an ordered list of arrays.

The length of the RecordArray, if not given, is the length of its shortest content; all are aligned element-by-element. If a RecordArray has zero contents, it may still represent a non-empty array. In that case, its length is specified by a length parameter.

RecordArrays correspond to Apache Arrow’sstruct type.

To illustrate how the constructor arguments are interpreted, the following is a simplified implementation of __init__, __len__, and __getitem__:

class RecordArray(Content): def init(self, contents, fields, length): assert isinstance(contents, list) assert isinstance(length, int) for x in contents: assert isinstance(x, Content) assert len(x) >= length assert fields is None or isinstance(fields, list) if isinstance(fields, list): assert len(fields) == len(contents) for x in fields: assert isinstance(x, str) self.contents = contents self.fields = fields self.length = length

def __len__(self):
    return self.length

def __getitem__(self, where):
    if isinstance(where, int):
        if where < 0:
            where += len(self)
        assert 0 <= where < len(self)
        record = [x[where] for x in self.contents]
        if self.fields is None:
            return tuple(record)
        else:
            return dict(zip(self.fields, record))

    elif isinstance(where, slice) and where.step is None:
        if len(self.contents) == 0:
            start = min(max(where.start, 0), self.length)
            stop = min(max(where.stop, 0), self.length)
            if stop < start:
                stop = start
            return RecordArray([], self.fields, stop - start)
        else:
            return RecordArray(
                [x[where] for x in self.contents],
                self.fields,
                where.stop - where.start,
            )

    elif isinstance(where, str):
        if self.fields is None:
            try:
                i = int(where)
            except ValueError:
                pass
            else:
                if i < len(self.contents):
                    return self.contents[i][0 : len(self)]
        else:
            try:
                i = self.fields.index(where)
            except ValueError:
                pass
            else:
                return self.contents[i][0 : len(self)]
        raise ValueError("field " + repr(where) + " not found")

    else:
        raise AssertionError(where)

ak.contents.RecordArray.copy(self, contents=UNSET, fields=UNSET, length=UNSET, *, parameters=UNSET, backend=UNSET)#

ak.contents.RecordArray.__copy__(self)#

ak.contents.RecordArray.__deepcopy__(self, memo)#

ak.contents.RecordArray.simplified(cls, contents, fields, length=None, *, parameters=None, backend=None)#

ak.contents.RecordArray.to_tuple(self)#

ak.contents.RecordArray._form_with_key(self, getkey)#

ak.contents.RecordArray._form_with_key_path(self, path)#

ak.contents.RecordArray._to_buffers(self, form, getkey, container, backend, byteorder)#

ak.contents.RecordArray._to_typetracer(self, forget_length)#

ak.contents.RecordArray._touch_data(self, recursive)#

ak.contents.RecordArray._touch_shape(self, recursive)#

ak.contents.RecordArray.length#

ak.contents.RecordArray.__repr__(self)#

ak.contents.RecordArray._repr(self, indent, pre, post)#

ak.contents.RecordArray.content(self, index_or_field)#

ak.contents.RecordArray.maybe_content(self, index_or_field)#

ak.contents.RecordArray._getitem_nothing(self)#

ak.contents.RecordArray._is_getitem_at_placeholder(self)#

ak.contents.RecordArray._is_getitem_at_virtual(self)#

ak.contents.RecordArray._getitem_at(self, where)#

ak.contents.RecordArray._getitem_range(self, start, stop)#

ak.contents.RecordArray._getitem_field(self, where, only_fields=())#

ak.contents.RecordArray._getitem_fields(self, where, only_fields=())#

ak.contents.RecordArray._carry(self, carry, allow_lazy)#

ak.contents.RecordArray._getitem_next_jagged(self, slicestarts, slicestops, slicecontent, tail)#

ak.contents.RecordArray._getitem_next(self, head, tail, advanced)#

ak.contents.RecordArray._offsets_and_flattened(self, axis, depth)#

ak.contents.RecordArray._mergeable_next(self, other, mergebool)#

ak.contents.RecordArray._mergemany(self, others)#

ak.contents.RecordArray._fill_none(self, value)#

ak.contents.RecordArray._local_index(self, axis, depth)#

ak.contents.RecordArray._numbers_to_type(self, name, including_unknown)#

ak.contents.RecordArray._is_unique(self, negaxis, starts, parents, outlength)#

ak.contents.RecordArray._unique(self, negaxis, starts, parents, outlength)#

ak.contents.RecordArray._argsort_next(self, negaxis, starts, shifts, parents, outlength, ascending, stable)#

ak.contents.RecordArray._sort_next(self, negaxis, starts, parents, outlength, ascending, stable)#

ak.contents.RecordArray._combinations(self, n, replacement, recordlookup, parameters, axis, depth)#

ak.contents.RecordArray._reduce_next(self, reducer, negaxis, starts, shifts, parents, outlength, mask, keepdims, behavior)#

ak.contents.RecordArray._validity_error(self, path)#

ak.contents.RecordArray._nbytes_part(self)#

ak.contents.RecordArray._pad_none(self, target, axis, depth, clip)#

ak.contents.RecordArray._to_arrow(self, pyarrow, mask_node, validbytes, length, options)#

ak.contents.RecordArray._to_cudf(self, cudf, mask, length)#

ak.contents.RecordArray._to_backend_array(self, allow_missing, backend)#

ak.contents.RecordArray._remove_structure(self, backend, options)#

ak.contents.RecordArray._recursively_apply(self, action, depth, depth_context, lateral_context, options)#

ak.contents.RecordArray.to_packed(self, recursive=True)#

ak.contents.RecordArray._to_list(self, behavior, json_conversions)#

ak.contents.RecordArray._to_backend(self, backend)#

ak.contents.RecordArray._materialize(self)#

ak.contents.RecordArray._is_all_materialized#

ak.contents.RecordArray._is_any_materialized#

ak.contents.RecordArray._is_equal_to(self, other, index_dtype, numpyarray, all_parameters)#