code: def isel(self, indexers=None, drop=False, **indexers_kwargs):
          
          indexers = either_dict_or_kwargs(indexers, indexers_kwargs, 'isel')
  
          invalid = [k for k in indexers if k not in self.dims]
          if invalid:
              raise ValueError("dimensions %r do not exist" % invalid)
  
          key = [slice(None)] * self.ndim
          for i, dim in enumerate(self.dims):
              if dim in indexers:
                  key[i] = indexers[dim]
          return self[tuple(key)]
docs: Return a new array indexed along the specified dimension(s).
  
          Parameters
          ----------
          **indexers : {dim: indexer, ...}
              Keyword arguments with names matching dimensions and values given
              by integers, slice objects or arrays.
  
          Returns
          -------
          obj : Array object
              A new Array with the selected data and dimensions. In general,
              the new variable's data will be a view of this variable's data,
              unless numpy fancy indexing was triggered by using an array
              indexer, in which case the data will be a copy.