def METHOD_NAME(route, i, k):
    """
    Take everything the same up to i, then reverse i:k, then take k: normally.
    Parameters
    ----------
    route: ndarray
        Path to swap postions in
    i: int
        first swap index
    k: int
        second swap index
    Returns
    -------
    two-opt swapped route
    Notes
    -----
    Returns a copy. Temping to do something in place, e.g. route[i:k + 1] = route[k:i - 1: -1], but the algorithm
    seems to require a copy somewhere anyway, so might as well do it here.
    """
    return np.concatenate([route[:i],  # [start up to first swap position)
                           route[k:i - 1: -1],  # [from first swap to second], reversed
                           route[k + 1:]])  # (everything else]