code: def _get_indices(values, selected, tolerance):
      
      idx_data = []
      idx_output = []
      for idx_of_selected, one_selected in enumerate(selected):
  
          if tolerance is None or values.dtype.kind == 'U':
              idx_of_data = where(values == one_selected)[0]
          else:
              idx_of_data = where(abs(values - one_selected) <= tolerance)[0] # actual use min
  
          if len(idx_of_data) > 0:
              idx_data.append(idx_of_data[0])
              idx_output.append(idx_of_selected)
  
      return idx_data, idx_output
docs: Get indices based on user-selected values.
  
      Parameters
      ----------
      values : ndarray (any dtype)
          values present in the axis.
      selected : ndarray (any dtype) or tuple or list
          values selected by the user
      tolerance : float
          avoid rounding errors.
  
      Returns
      -------
      idx_data : list of int
          indices of row/column to select the data
      idx_output : list of int
          indices of row/column to copy into output
  
      Notes
      -----
      This function is probably not very fast, but it's pretty robust. It keeps
      the order, which is extremely important.
  
      If you use values in the self.axis, you don't need to specify tolerance.
      However, if you specify arbitrary points, floating point errors might
      affect the actual values. Of course, using tolerance is much slower.
  
      Maybe tolerance should be part of Select instead of here.