class_docstr: Class for Stiefel manifolds St(n,p).
  
  A set of all orthonormal p-frames in n-dimensional space,
  where p <= n.
  
  Parameters
  ----------
  n : int
      Dimension of the ambient vector space.
  p : int
      Number of basis vectors in the orthonormal frame.
docstr: Sample on St(n,p) from the uniform distribution.
  
  If :math:`Z(p,n) \sim N(0,1)`, then :math:`St(n,p) \sim U`,
  according to Haar measure:
  :math:`St(n,p) := Z(Z^TZ)^{-1/2}`.
  
  Parameters
  ----------
  n_samples : int
      Number of samples.
      Optional, default: 1.
  
  Returns
  -------
  samples : array-like, shape=[..., n, p]
      Samples on the Stiefel manifold.
code: def random_uniform(self, n_samples=1):
      r"""Sample on St(n,p) from the uniform distribution.
  
      If :math:`Z(p,n) \sim N(0,1)`, then :math:`St(n,p) \sim U`,
      according to Haar measure:
      :math:`St(n,p) := Z(Z^TZ)^{-1/2}`.
  
      Parameters
      ----------
      n_samples : int
          Number of samples.
          Optional, default: 1.
  
      Returns
      -------
      samples : array-like, shape=[..., n, p]
          Samples on the Stiefel manifold.
      """
      n, p = self.n, self.p
      size = (n_samples, n, p) if n_samples != 1 else (n, p)
  
      std_normal = gs.random.normal(size=size)
      std_normal_transpose = Matrices.transpose(std_normal)
      aux = Matrices.mul(std_normal_transpose, std_normal)
      inv_sqrt_aux = powermh(aux, -1.0 / 2)
      samples = Matrices.mul(std_normal, inv_sqrt_aux)
  
      return samples
  
imports: import warnings
  import geomstats.backend
  import geomstats.errors
  from geomstats import algebra_utils
  from geomstats.geometry.base import LevelSet
  from geomstats.geometry.hermitian_matrices import powermh
  from geomstats.geometry.matrices import Matrices
  from geomstats.geometry.riemannian_metric import RiemannianMetric
  from geomstats.vectorization import repeat_out
label_desc: Use image node_id 7 for calling the Stiefel obj's underlying member method code with example usage: obj.random_uniform(n_samples) and returns: samples