<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _factorize_array(values, na_sentinel=-1, size_hint=None, na_value=None):
 """Factorize an array-like to labels and uniques. This doesn't do any coercion of types or unboxing before factorization. Parameters values : ndarray na_sentinel : int, default -1 size_hint : int, optional Passsed through to the hashtable's 'get_labels' method na_value : object, optional A value in `values` to consider missing. Note: only use this parameter when you know that you don't have any values pandas would consider missing in the array (NaN for float data, iNaT for datetimes, etc.). Returns ------- labels, uniques : ndarray """

    (hash_klass, _), values = _get_data_algo(values, _hashtables)

    table = hash_klass(size_hint or len(values))
    uniques, labels = table.factorize(values, na_sentinel=na_sentinel,
                                      na_value=na_value)

    labels = ensure_platform_int(labels)
    return labels, uniques