code: def hjorth(X, D=None):
      
  
      if D is None:
          D = numpy.diff(X)
          D = D.tolist()
  
      D.insert(0, X[0])  # pad the first difference
      D = numpy.array(D)
  
      n = len(X)
  
      M2 = float(sum(D ** 2)) / n
      TP = sum(numpy.array(X) ** 2)
      M4 = 0
      for i in range(1, len(D)):
          M4 += (D[i] - D[i - 1]) ** 2
      M4 = M4 / n
  
      return numpy.sqrt(M2 / TP), numpy.sqrt(
          float(M4) * TP / M2 / M2
      )
docs: Compute Hjorth mobility and complexity of a time series from either two
      cases below:
          1. X, the time series of type list (default)
          2. D, a first order differential sequence of X (if D is provided,
             recommended to speed up)
  
      In case 1, D is computed using Numpy's Difference function.
  
      Notes
      -----
      To speed up, it is recommended to compute D before calling this function
      because D may also be used by other functions whereas computing it here
      again will slow down.
  
      Parameters
      ----------
  
      X
          list
  
          a time series
  
      D
          list
  
          first order differential sequence of a time series
  
      Returns
      -------
  
      As indicated in return line
  
      Hjorth mobility and complexity