ak.local_index
--------------

Defined in `awkward.operations.structure <https://github.com/scikit-hep/awkward-1.0/blob/80bbef0738a6b7928333d7c705ee1b359991de5b/src/awkward/operations/structure.py>`__ on `line 2515 <https://github.com/scikit-hep/awkward-1.0/blob/80bbef0738a6b7928333d7c705ee1b359991de5b/src/awkward/operations/structure.py#L2515>`__.

.. py:function:: ak.local_index(array, axis=-1, highlevel=True, behavior=None)


    :param array: Array to index.
    :param axis: The dimension at which this operation is applied. The
             outermost dimension is ``0``, followed by ``1``, etc., and negative
             values count backward from the innermost: ``-1`` is the innermost
             dimension, ``-2`` is the next level up, etc.
    :type axis: int
    :param highlevel: If True, return an :py:obj:`ak.Array`; otherwise, return
                  a low-level :py:obj:`ak.layout.Content` subclass.
    :type highlevel: bool
    :param behavior: Custom :py:obj:`ak.behavior` for the output array, if
                 high-level.
    :type behavior: None or dict

For example,

.. code-block:: python


    >>> 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, 1, 2, 3]]] type='4 * var * var * int64'>

Note that you can make a Pandas-style MultiIndex by calling this function on
every axis.

.. code-block:: python


    >>> multiindex = ak.zip([ak.local_index(array, i) for i in range(array.ndim)])
    >>> multiindex
    <Array [[[(0, 0, 0), (0, 0, ... ), (3, 2, 3)]]] type='4 * var * var * (int64, in...'>
    >>> ak.to_list(multiindex)
    [[[(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.to_list(ak.flatten(ak.flatten(multiindex)))
    [(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 :py:obj:`ak.to_pandas` directly.

.. code-block:: python


    >>> ak.to_pandas(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

