code: def split_by_idx(idxs, *a):
      
      mask = np.zeros(len(a[0]),dtype=bool)
      mask[np.array(idxs)] = True
      return [(o[mask],o[~mask]) for o in a]
docs: Split each array passed as *a, to a pair of arrays like this (elements selected by idxs,  the remaining elements)
      This can be used to split multiple arrays containing training data to validation and training set.
  
      :param idxs [int]: list of indexes selected
      :param a list: list of np.array, each array should have same amount of elements in the first dimension
      :return: list of tuples, each containing a split of corresponding array from *a.
              First element of each tuple is an array composed from elements selected by idxs,
              second element is an array of remaining elements.