ak.local_index#
Defined in awkward.operations.ak_local_index on line 22.
- ak.local_index(array, axis=-1, *, highlevel=True, behavior=None, attrs=None)#
- Parameters:
array – Array-like data (anything
ak.to_layoutrecognizes).axis (int or str) – The dimension at which this operation is applied. The outermost dimension is
0, followed by1, etc., and negative values count backward from the innermost:-1is the innermost dimension,-2is the next level up, etc. If a str, it is interpreted as the name of the axis which maps to an int if named axes are present. Named axes are attached to an array usingak.with_named_axisand removed withak.without_named_axis; also see the Named axes user guide.highlevel (bool) – If True, return an
ak.Array; otherwise, return a low-levelak.contents.Contentsubclass.behavior (None or dict) – Custom
ak.behaviorfor the output array, if high-level.attrs (None or dict) – Custom attributes for the output array, if high-level.
For example,
>>> array = ak.Array([ ... [[0.0, 1.1, 2.2], []], ... [[3.3, 4.4]], ... [], ... [[5.5], [], [6.6, 7.7, 8.8, 9.9]]]) >>> ak.local_index(array, axis=0) <Array [0, 1, 2, 3] type='4 * int64'> >>> ak.local_index(array, axis=1) <Array [[0, 1], [0], [], [0, 1, 2]] type='4 * var * int64'> >>> ak.local_index(array, axis=2) <Array [[[0, 1, 2], []], ..., [[0], ..., [...]]] type='4 * var * var * int64'>
Note that you can make a Pandas-style MultiIndex by calling this function on every axis.
>>> multiindex = ak.zip([ak.local_index(array, i) for i in range(array.ndim)]) >>> multiindex.show() [[[(0, 0, 0), (0, 0, 1), (0, 0, 2)], []], [[(1, 0, 0), (1, 0, 1)]], [], [[(3, 0, 0)], [], [(3, 2, 0), (3, 2, 1), (3, 2, 2), (3, 2, 3)]]] >>> ak.flatten(ak.flatten(multiindex)).show() [(0, 0, 0), (0, 0, 1), (0, 0, 2), (1, 0, 0), (1, 0, 1), (3, 0, 0), (3, 2, 0), (3, 2, 1), (3, 2, 2), (3, 2, 3)]
But if you’re interested in Pandas, you may want to use
ak.to_dataframedirectly.>>> ak.to_dataframe(array) values entry subentry subsubentry 0 0 0 0.0 1 1.1 2 2.2 1 0 0 3.3 1 4.4 3 0 0 5.5 2 0 6.6 1 7.7 2 8.8 3 9.9