code: def get_mu_params(lambdas, metricParams, fUpper):
      
      lambdas = numpy.array(lambdas, copy=False)
      # If original inputs were floats we need to make this a 2D array
      if len(lambdas.shape) == 1:
          resize_needed = True
          lambdas = lambdas[:,None]
      else:
          resize_needed = False
  
      evecs = metricParams.evecs[fUpper]
      evals = metricParams.evals[fUpper]
  
      evecs = numpy.array(evecs, copy=False)
  
      mus = ((lambdas.T).dot(evecs)).T
      mus = mus * numpy.sqrt(evals)[:,None]
  
      if resize_needed:
          mus = numpy.ndarray.flatten(mus)
  
      return mus
docs: Function to rotate from the lambda coefficients into position in the mu
      coordinate system. Mu = Cartesian metric, but not principal components.
  
      Parameters
      -----------
      lambdas : list of floats or numpy.arrays
          Position of the system(s) in the lambda coefficients
      metricParams : metricParameters instance
          Structure holding all the options for construction of the metric
          and the eigenvalues, eigenvectors and covariance matrix
          needed to manipulate the space.
      fUpper : float
          The value of fUpper to use when getting the mu coordinates from the
          lambda coordinates. This must be a key in metricParams.evals and
          metricParams.evecs (ie. we must know how to do the transformation for
          the given value of fUpper)
  
      Returns
      --------
      mus : list of floats or numpy.arrays
          Position of the system(s) in the mu coordinate system