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.
- If
fields
is None, the data are tuples, indexed only by their order. - Otherwise,
fields
is an ordered list of names with the same length as thecontents
, associating a field name to every content.
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)#