<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def unique(keys, axis=semantics.axis_default, return_index=False, return_inverse=False, return_count=False):
 """compute the set of unique keys Parameters keys : indexable key object keys object to find unique keys within axis : int if keys is a multi-dimensional array, the axis to regard as the sequence of key objects return_index : bool if True, return indexes such that keys[index] == unique return_inverse : bool if True, return the indices such that unique[inverse] == keys return_count : bool if True, return the number of times each unique key occurs in the input Notes ----- The kwargs are there to provide a backwards compatible interface to numpy.unique, but arguably, it is cleaner to call index and its properties directly, should more than unique values be desired as output """

    stable = return_index or return_inverse
    index = as_index(keys, axis, base = not stable, stable = stable)

    ret = index.unique,
    if return_index:
        ret = ret + (index.index,)
    if return_inverse:
        ret = ret + (index.inverse,)
    if return_count:
        ret = ret + (index.count,)
    return ret[0] if len(ret) == 1 else ret