code: def _to_noisy_numpy_array(
      cf_list: List[np.ndarray],
  ) -> Optional[np.ndarray]:
      """Adds a tiny noise onto ordinal features."""
      # In order to use double precision computation to get smaller errors, we add
      # noise after the features have been converted to numpy arrays.
      if not cf_list:
          return None
  
      arr = np.hstack([l.reshape((-1, 1)) for l in cf_list])
      # This may add a noise that is too big for features with very small mean. So
      # far it works fine, but should change it if it poses a problem.
      means = np.maximum(1, np.mean(np.abs(arr), axis=0))
      arr += _NOISE_AMPLITUDE * means * np.random.randn(*arr.shape)
      return arr
  
imports: import functools
  import itertools
  import math
  from typing import Any, List, Optional, Tuple, Union
  import uuid
  import numpy
  import pandas
  import scipy.special
  import sklearn.neighbors
label_desc: Use image node_id 14 for calling a global function with example usage: _to_noisy_numpy_array(cf_list) and returns: arr, None