docs: def features_extraction(windowed_signal, functions):
      """
      -----
      Brief
      -----
      Function to extract features given in functions, that returns an array with the set of features
      for each time window.
  
      -----------
      Description
      -----------
      Machine learning pipelines usually use features to represent each sample of the input signals.
      Those features should be relevant in the sense that they should be useful to distinguish between the classes
      of each specific problem, and not redundant, as the usage of redundant features usually improves the complexity
      of the problem without improving its results.
  
      This function allows to extract features from the various windows provided in windowed_signal.
  
      ----------
      Parameters
      ----------
      windowed_signal: list or numpy.array
          Input windowed signal (if your signal is not windowed, you can use the function windowing of this module).
      functions: list
          List of functions that will be applied to each window. For example: [numpy.mean, numpy.std]
  
      Returns
      -------
          Array of features with shape (n_windows, n_features).
      """
      features = np.zeros(shape=(windowed_signal.shape[0], len(functions)))
  
      for i, window in enumerate(windowed_signal):
          fea = []
          for f in functions:
              fea.append(f(window))
          features[i] = fea
  
      return features