code: def compute_empirical(cls, X):
          
          z_left = []
          z_right = []
          L = []
          R = []
  
          U, V = cls.split_matrix(X)
          N = len(U)
          base = np.linspace(EPSILON, 1.0 - EPSILON, COMPUTE_EMPIRICAL_STEPS)
          # See https://github.com/DAI-Lab/Copulas/issues/45
  
          for k in range(COMPUTE_EMPIRICAL_STEPS):
              left = sum(np.logical_and(U <= base[k], V <= base[k])) / N
              right = sum(np.logical_and(U >= base[k], V >= base[k])) / N
  
              if left > 0:
  
                  z_left.append(base[k])
                  L.append(left / base[k] ** 2)
  
              if right > 0:
                  z_right.append(base[k])
                  R.append(right / (1 - z_right[k]) ** 2)
  
          return z_left, L, z_right, R
docs: Compute empirical distribution.