kwarray.util_misc module¶
Misc tools that should find a better home
- class kwarray.util_misc.FlatIndexer(lens)[source]¶
Bases:
NiceRepr
Creates a flat “view” of a jagged nested indexable object. Only supports one offset level.
- Parameters:
lens (List[int]) – 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(items)[source]¶
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
- unravel(index)[source]¶
- Parameters:
index (int | List[int]) – raveled index
- Returns:
outer and inner indices
- Return type:
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)