ak.str.uniques ============== Defined in `awkward.operations.str.akstr_uniques `__ on `line 87 `__. .. py:function:: ak.str.uniques(array, *, highlevel=True, behavior=None, attrs=None) :param array: Array-like data (anything :py:obj:`ak.to_layout` recognizes). :param highlevel: If True, return an :py:obj:`ak.Array`; otherwise, return a low-level :py:obj:`ak.contents.Content` subclass. :type highlevel: bool :param behavior: Custom :py:obj:`ak.behavior` for the output array, if high-level. :type behavior: None or dict :param attrs: Custom attributes for the output array, if high-level. :type attrs: None or dict Returns one copy of each distinct value in an array of strings or bytestrings, applying the operation independently at the final string-list axis and preserving outer nesting. If ``array`` contains no string or bytestring data, this function returns it unchanged. Requires the pyarrow library and calls `pyarrow.compute.unique `__. Traversal strategy: ``ak.transform`` walks the Awkward layout tree and calls ``_action`` at each node. When ``_action`` finds a list whose content is a string or bytestring layout, it applies the Arrow kernel to slices defined by that list's offsets and returns a replacement layout, which stops recursion into that subtree. Other nodes return None, allowing ``ak.transform`` to continue. This follows Awkward's public traversal API and uses ``_apply_through_arrow`` for Arrow conversion rather than manually rebuilding the surrounding nesting with ``recursively_apply``.