docs: def get_values(self):
          """
          Returns the CPD of the variables present in the network
  
          Example
          --------
          >>> from pgmpy.readwrite import BIFReader
          >>> reader = BIFReader("bif_test.bif")
          >>> reader.get_values()
          {'bowel-problem': np.array([[0.01],
                                      [0.99]]),
          'dog-out': np.array([[0.99, 0.97, 0.9, 0.3],
                              [0.01, 0.03, 0.1, 0.7]]),
          'family-out': np.array([[0.15],
                                  [0.85]]),
          'hear-bark': np.array([[0.7, 0.01],
                                  [0.3, 0.99]]),
          'light-on': np.array([[0.6, 0.05],
                              [0.4, 0.95]])}
          """
          variable_cpds = {}
          for block in self.probability_block():
              names = self.probability_expr.searchString(block)
              var_name, parents = names[0][0], names[0][1:]
              cpds = self.cpd_expr.searchString(block)
              if 'table' in block:
                  arr = np.array([float(j) for i in cpds for j in i])
                  arr = arr.reshape((len(self.variable_states[var_name]),
                                     arr.size // len(self.variable_states[var_name])))
              else:
                  arr_length = np.prod([len(self.variable_states[var]) for var in parents])
                  arr = np.zeros((len(self.variable_states[var_name]), arr_length))
                  values_dict = {}
                  for prob_line in cpds:
                      states = prob_line[:len(parents)]
                      vals = [float(i) for i in prob_line[len(parents):]]
                      values_dict[tuple(states)] = vals
                  for index, combination in enumerate(product(*[self.variable_states[var] for var in parents])):
                      arr[:, index] = values_dict[combination]
              variable_cpds[var_name] = arr
  
          return variable_cpds