@nb.njit(parallel=True)
def _snn_imp(ind, ref_set_):
    'Internal function for fast snn calculation\n\n    Parameters\n    ----------\n    ind : int\n        Indices return by kNN.\n\n    ref_set_ : int, optional (default=10)\n        specifies the number of shared nearest neighbors to create the\n        reference set. Note that ref_set must be smaller than n_neighbors.\n\n    '
    n = ind.shape[0]
    _count = np.zeros(shape=(n, ref_set_), dtype=np.uint32)
    for i in nb.prange(n):
        temp = np.empty(n, dtype=np.uint32)
        test_element_set = set(ind[i])
        for j in nb.prange(n):
            temp[j] = len(set(ind[j]).intersection(test_element_set))
        temp[i] = np.iinfo(np.uint32).max
        _count[i] = np.argsort(temp)[::(- 1)][1:(ref_set_ + 1)]
    return _count
Internal function for fast snn calculation

Parameters
----------
ind : int
    Indices return by kNN.

ref_set_ : int, optional (default=10)
    specifies the number of shared nearest neighbors to create the
    reference set. Note that ref_set must be smaller than n_neighbors.
@nb.njit(parallel=True)
def _snn_imp(ind, ref_set_):
    'Internal function for fast snn calculation\n\n    Parameters\n    ----------\n    ind : int\n        Indices return by kNN.\n\n    ref_set_ : int, optional (default=10)\n        specifies the number of shared nearest neighbors to create the\n        reference set. Note that ref_set must be smaller than n_neighbors.\n\n    '
    n = ind.shape[0]
    _count = np.zeros(shape=(n, ref_set_), dtype=np.uint32)
    for i in nb.prange(n):
        temp = np.empty(n, dtype=np.uint32)
        test_element_set = set(ind[i])
        for j in nb.prange(n):
            temp[j] = len(set(ind[j]).intersection(test_element_set))
        temp[i] = np.iinfo(np.uint32).max
        _count[i] = np.argsort(temp)[::(- 1)][1:(ref_set_ + 1)]
    return _count