Source code for arkouda.array_api._set_functions
from __future__ import annotations
from ._array_object import Array
from typing import NamedTuple, cast
from arkouda.client import generic_msg
from arkouda.pdarrayclass import create_pdarray
[docs]
class UniqueAllResult(NamedTuple):
values: Array
indices: Array
inverse_indices: Array
counts: Array
[docs]
class UniqueCountsResult(NamedTuple):
values: Array
counts: Array
[docs]
class UniqueInverseResult(NamedTuple):
values: Array
inverse_indices: Array
[docs]
def unique_all(x: Array, /) -> UniqueAllResult:
resp = cast(
str,
generic_msg(
cmd=f"uniqueAll{x.ndim}D",
args={"name": x._array},
),
)
arrays = [Array._new(create_pdarray(r)) for r in resp.split('+')]
return UniqueAllResult(
values=arrays[0],
indices=arrays[1],
inverse_indices=arrays[2],
counts=arrays[3],
)
[docs]
def unique_counts(x: Array, /) -> UniqueCountsResult:
resp = cast(
str,
generic_msg(
cmd=f"uniqueCounts{x.ndim}D",
args={"name": x._array},
),
)
arrays = [Array._new(create_pdarray(r)) for r in resp.split('+')]
return UniqueCountsResult(
values=arrays[0],
counts=arrays[1],
)
[docs]
def unique_inverse(x: Array, /) -> UniqueInverseResult:
resp = cast(
str,
generic_msg(
cmd=f"uniqueInverse{x.ndim}D",
args={"name": x._array},
),
)
arrays = [Array._new(create_pdarray(r)) for r in resp.split('+')]
return UniqueInverseResult(
values=arrays[0],
inverse_indices=arrays[1],
)
[docs]
def unique_values(x: Array, /) -> Array:
return Array._new(
create_pdarray(
cast(
str,
generic_msg(
cmd=f"uniqueValues{x.ndim}D",
args={"name": x._array},
),
)
)
)