code: def subsample_n(X, n=0, seed=0):
      
      if n < 0:
          raise ValueError('n must be greater 0')
      np.random.seed(seed)
      n = X.shape[0] if (n == 0 or n > X.shape[0]) else n
      rows = np.random.choice(X.shape[0], size=n, replace=False)
      Xsampled = X[rows]
      return Xsampled, rows
docs: Subsample n samples from rows of array.
  
      Parameters
      ----------
      X : np.ndarray
          Data array.
      seed : int
          Seed for sampling.
  
      Returns
      -------
      Xsampled : np.ndarray
          Subsampled X.
      rows : np.ndarray
          Indices of rows that are stored in Xsampled.