code: def selection_tournament_faster(self, tourn_size=3):
      """
      Select the best individual among *tournsize* randomly chosen
      Same with `selection_tournament` but much faster using numpy
      individuals,
      :param self:
      :param tourn_size:
      :return:
      """
      aspirants_idx = np.random.randint(
          self.size_pop, size=(self.size_pop, tourn_size)
      )
      aspirants_values = self.FitV[aspirants_idx]
      winner = aspirants_values.argmax(
          axis=1
      )  # winner index in every team
      sel_index = [aspirants_idx[i, j] for i, j in enumerate(winner)]
      self.Chrom = self.Chrom[sel_index, :]
      return self.Chrom
  
imports: import numpy
label_desc: Use image node_id 2 for calling a global function with example usage: selection_tournament_faster(tourn_size) and returns: self