def _factorize_array(values, na_sentinel=-<NUM_LIT:1>, size_hint=None,<EOL>na_value=None):
(hash_klass, _), values = _get_data_algo(values, _hashtables)<EOL>table = hash_klass(size_hint or len(values))<EOL>uniques, labels = table.factorize(values, na_sentinel=na_sentinel,<EOL>na_value=na_value)<EOL>labels = ensure_platform_int(labels)<EOL>return labels, uniques<EOL>
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