docs: def reduce(self, values, inplace=True):
          """
          Reduces the cpd table to the context of given variable values.
  
          Parameters
          ----------
          values: list, array-like
              A list of tuples of the form (variable_name, variable_state).
  
          inplace: boolean
              If inplace=True it will modify the factor itself, else would return
              a new factor.
  
          Examples
          --------
          >>> from pgmpy.factors.discrete import TabularCPD
          >>> cpd_table = TabularCPD('grade', 2,
          ...                        [[0.7, 0.6, 0.6, 0.2],[0.3, 0.4, 0.4, 0.8]],
          ...                        ['intel', 'diff'], [2, 2])
          >>> cpd_table.reduce([('diff', 0)])
          >>> cpd_table.get_values()
          array([[ 0.7,  0.6],
                 [ 0.3,  0.4]])
          """
          if self.variable in (value[0] for value in values):
              raise ValueError("Reduce not allowed on the variable on which CPD is defined")
  
          tabular_cpd = self if inplace else self.copy()
  
          super(TabularCPD, tabular_cpd).reduce(values)
          tabular_cpd.normalize()
  
          if not inplace:
              return tabular_cpd