<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def isin(X,Y):
 """ Indices of elements in a numpy array that appear in another. Fast routine for determining indices of elements in numpy array `X` that appear in numpy array `Y`, returning a boolean array `Z` such that:: Z[i] = X[i] in Y **Parameters** **X** : numpy array Numpy array to comapare to numpy array `Y`. For each element of `X`, ask if it is in `Y`. **Y** : numpy array Numpy array to which numpy array `X` is compared. For each element of `X`, ask if it is in `Y`. **Returns** **b** : numpy array (bool) Boolean numpy array, `len(b) = len(X)`. **See Also:** :func:`tabular.fast.recarrayisin`, :func:`tabular.fast.arraydifference` """

    if len(Y) > 0:
        T = Y.copy()
        T.sort()
        D = T.searchsorted(X)
        T = np.append(T,np.array([0]))
        W = (T[D] == X)
        if isinstance(W,bool):
            return np.zeros((len(X),),bool)
        else:
            return (T[D] == X)
    else:
        return np.zeros((len(X),),bool)