code: def extract_cells(self, ind):
          
          if not isinstance(ind, np.ndarray):
              ind = np.array(ind, np.ndarray)
  
          if ind.dtype == np.bool:
              ind = ind.nonzero()[0].astype(vtki.ID_TYPE)
  
          if ind.dtype != vtki.ID_TYPE:
              ind = ind.astype(vtki.ID_TYPE)
  
          if not ind.flags.c_contiguous:
              ind = np.ascontiguousarray(ind)
  
          vtk_ind = numpy_to_vtkIdTypeArray(ind, deep=False)
  
          # Create selection objects
          selectionNode = vtk.vtkSelectionNode()
          selectionNode.SetFieldType(vtk.vtkSelectionNode.CELL)
          selectionNode.SetContentType(vtk.vtkSelectionNode.INDICES)
          selectionNode.SetSelectionList(vtk_ind)
  
          selection = vtk.vtkSelection()
          selection.AddNode(selectionNode)
  
          # extract
          extract_sel = vtk.vtkExtractSelection()
          extract_sel.SetInputData(0, self)
          extract_sel.SetInputData(1, selection)
          extract_sel.Update()
          subgrid = _get_output(extract_sel)
  
          # extracts only in float32
          if self.points.dtype is not np.dtype('float32'):
              ind = subgrid.point_arrays['vtkOriginalPointIds']
              subgrid.points = self.points[ind]
  
          return subgrid
docs: Returns a subset of the grid
  
          Parameters
          ----------
          ind : np.ndarray
              Numpy array of cell indices to be extracted.
  
          Returns
          -------
          subgrid : vtki.UnstructuredGrid
              Subselected grid