code: def weighted_mean(
      means: ARRAY_OR_SERIES[FLOAT], weights: ARRAY_OR_SERIES[FLOAT]
  ) -> FLOAT:
      """Computes the weighted mean/average, or in the case of a
      financial portfolio, it can be used for the Expected Return
      of said portfolio.
  
      :param means: An array representing mean/average values
      :type means: :py:data:`~.finquant.data_types.ARRAY_OR_SERIES`
  
      :param weights: An array representing weights
      :type weights: :py:data:`~.finquant.data_types.ARRAY_OR_SERIES`
  
      :rtype: :py:data:`~.finquant.data_types.FLOAT`
      :return: The weighted mean as a floating point number: ``np.sum(means*weights)``
      """
      # Type validations:
      type_validation(means=means, weights=weights)
      weighted_mu: FLOAT = float(np.sum(means * weights))
      return weighted_mu
  
file_path: FinQuant/finquant/quants.py
imports: from typing import Optional, Tuple
  import numpy
  import pandas
  from scipy.stats import norm
  from finquant.data_types import ARRAY_OR_DATAFRAME, ARRAY_OR_SERIES, FLOAT, INT, NUMERIC
  from finquant.returns import weighted_mean_daily_returns
  from finquant.type_utilities import type_validation
label_desc: Use image node_id 1 for calling a global function with example usage: weighted_mean(means, weights) and returns: weighted_mu