code: def stationary_distribution(T):
      r
      # is this a transition matrix?
      if not is_transition_matrix(T):
          raise ValueError("Input matrix is not a transition matrix."
                           "Cannot compute stationary distribution")
      # is the stationary distribution unique?
      if not is_connected(T, directed=False):
          raise ValueError("Input matrix is not weakly connected. "
                           "Therefore it has no unique stationary "
                           "distribution. Separate disconnected components "
                           "and handle them separately")
      # we're good to go...
      if _issparse(T):
          mu = sparse.stationary_vector.stationary_distribution(T)
      else:
          mu = dense.stationary_vector.stationary_distribution(T)
      return mu
docs: r"""Compute stationary distribution of stochastic matrix T.
  
      Parameters
      ----------
      T : (M, M) ndarray or scipy.sparse matrix
          Transition matrix
  
      Returns
      -------
      mu : (M,) ndarray
          Vector of stationary probabilities.
  
      Notes
      -----
      The stationary distribution :math:`\mu` is the left eigenvector
      corresponding to the non-degenerate eigenvalue :math:`\lambda=1`,
  
      .. math:: \mu^T T =\mu^T.
  
      Examples
      --------
  
      >>> import numpy as np
      >>> from msmtools.analysis import stationary_distribution
  
      >>> T = np.array([[0.9, 0.1, 0.0], [0.4, 0.2, 0.4], [0.0, 0.1, 0.9]])
      >>> mu = stationary_distribution(T)
      >>> mu
      array([ 0.44444444, 0.11111111, 0.44444444])