code: def _normalize_categoricals(X, types, clip_low, clip_high):
      if X.dtype == object:
          features = []
          for i in range(X.shape[1]):
              col = X[:, i]
              col[col == np.array(None)] = np.nan
              if str in set(map(type, col)):
                  col = _normalize_string_categorical(
                      col, clip_low, clip_high
                  )
              features.append(col)
          X = np.array(features, float).T
      else:
          X = X.copy()
          if types is not None:
              for i in range(X.shape[1]):
                  if types[i] == "nominal":
                      X[:, i] = _normalize_float_categorical(
                          X[:, i], clip_low, clip_high
                      )
      return X
  
file_path: interpret/python/interpret-core/interpret/utils/_synthetic.py
imports: import numpy
  from itertools import takewhile
  import operator
label_desc: Use image node_id 7 for calling a global function with example usage: _normalize_categoricals(X, types, clip_low, clip_high) and returns: X