kwarray.util_misc

Module Contents

Classes

FlatIndexer

Creates a flat "view" of a jagged nested indexable object.

class kwarray.util_misc.FlatIndexer(lens)

Bases: ubelt.NiceRepr

Creates a flat “view” of a jagged nested indexable object. Only supports one offset level.

Parameters

lens (list) – a list of the lengths of the nested objects.

Doctest:
>>> self = FlatIndexer([1, 2, 3])
>>> len(self)
>>> self.unravel(4)
>>> self.ravel(2, 1)
classmethod fromlist(cls, items)

Convenience method to create a FlatIndexer from the list of items itself instead of the array of lengths.

Parameters

items (List[list]) – a list of the lists you want to flat index over

Returns

FlatIndexer

__len__(self)
unravel(self, index)
Parameters

index – raveled index

Returns

outer and inner indices

Return type

Tuple[int, int]

Example

>>> import kwarray
>>> rng = kwarray.ensure_rng(0)
>>> items = [rng.rand(rng.randint(0, 10)) for _ in range(10)]
>>> self = kwarray.FlatIndexer.fromlist(items)
>>> index = np.arange(0, len(self))
>>> outer, inner = self.unravel(index)
>>> recon = self.ravel(outer, inner)
>>> # This check is only possible because index is an arange
>>> check1 = np.hstack(list(map(sorted, kwarray.group_indices(outer)[1])))
>>> check2 = np.hstack(kwarray.group_consecutive_indices(inner))
>>> assert np.all(check1 == index)
>>> assert np.all(check2 == index)
>>> assert np.all(index == recon)
ravel(self, outer, inner)
Parameters
  • outer – index into outer list

  • inner – index into the list referenced by outer

Returns

the raveled index

Return type

index