docs: def divide(self, phi1, inplace=True):
          """
          DiscreteFactor division by `phi1`.
  
          Parameters
          ----------
          phi1 : `DiscreteFactor` instance
              The denominator for division.
  
          inplace: boolean
              If inplace=True it will modify the factor itself, else would return
              a new factor.
  
          Returns
          -------
          DiscreteFactor or None: if inplace=True (default) returns None
                          if inplace=False returns a new `DiscreteFactor` instance.
  
          Examples
          --------
          >>> from pgmpy.factors.discrete import DiscreteFactor
          >>> phi1 = DiscreteFactor(['x1', 'x2', 'x3'], [2, 3, 2], range(12))
          >>> phi2 = DiscreteFactor(['x3', 'x1'], [2, 2], range(1, 5)])
          >>> phi1.divide(phi2)
          >>> phi1.variables
          ['x1', 'x2', 'x3']
          >>> phi1.cardinality
          array([2, 3, 2])
          >>> phi1.values
          array([[[ 0.        ,  0.33333333],
                  [ 2.        ,  1.        ],
                  [ 4.        ,  1.66666667]],
  
                 [[ 3.        ,  1.75      ],
                  [ 4.        ,  2.25      ],
                  [ 5.        ,  2.75      ]]])
          """
          phi = self if inplace else self.copy()
          phi1 = phi1.copy()
  
          if set(phi1.variables) - set(phi.variables):
              raise ValueError("Scope of divisor should be a subset of dividend")
  
          # Adding extra variables in phi1.
          extra_vars = set(phi.variables) - set(phi1.variables)
          if extra_vars:
              slice_ = [slice(None)] * len(phi1.variables)
              slice_.extend([np.newaxis] * len(extra_vars))
              phi1.values = phi1.values[tuple(slice_)]
  
              phi1.variables.extend(extra_vars)
  
          # Rearranging the axes of phi1 to match phi
          for axis in range(phi.values.ndim):
              exchange_index = phi1.variables.index(phi.variables[axis])
              phi1.variables[axis], phi1.variables[exchange_index] = phi1.variables[exchange_index], phi1.variables[axis]
              phi1.values = phi1.values.swapaxes(axis, exchange_index)
  
          phi.values = phi.values / phi1.values
  
          # If factor division 0/0 = 0 but is undefined for x/0. In pgmpy we are using
          # np.inf to represent x/0 cases.
          phi.values[np.isnan(phi.values)] = 0
  
          if not inplace:
              return phi