docs: def marginalize(self, variables, inplace=True):
          """
          Modifies the cpd table with marginalized values.
  
          Parameters
          ----------
          variables: list, array-like
              list of variable to be marginalized
  
          inplace: boolean
              If inplace=True it will modify the CPD itself, else would return
              a new CPD
  
          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.marginalize(['diff'])
          >>> cpd_table.get_values()
          array([[ 0.65,  0.4 ],
                  [ 0.35,  0.6 ]])
          """
          if self.variable in variables:
              raise ValueError("Marginalization not allowed on the variable on which CPD is defined")
  
          tabular_cpd = self if inplace else self.copy()
  
          super(TabularCPD, tabular_cpd).marginalize(variables)
          tabular_cpd.normalize()
  
          if not inplace:
              return tabular_cpd