code: def _hist_per_column(arr, feature_types=None):
      counts = []
      bin_edges = []
  
      if feature_types is not None:
          for i, feat_type in enumerate(feature_types):
              if feat_type == "continuous":
                  count, bin_edge = np.histogram(
                      arr[:, i], bins="doane"
                  )
                  counts.append(count)
                  bin_edges.append(bin_edge)
              elif feat_type == "nominal" or feat_type == "ordinal":
                  # Todo: check if this call
                  bin_edge, count = np.unique(
                      arr[:, i], return_counts=True
                  )
                  counts.append(count)
                  bin_edges.append(bin_edge)
      else:
          for i in range(arr.shape[1]):
              count, bin_edge = np.histogram(arr[:, i], bins="doane")
              counts.append(count)
              bin_edges.append(bin_edge)
      return counts, bin_edges
  
imports: from ..api.base import ExplainerMixin
  from ..api.templates import FeatureValueExplanation
  from ..utils._explanation import gen_name_from_class, gen_global_selector, gen_local_selector
  from ..utils._explanation import gen_perf_dicts
  from abc import abstractmethod
  from sklearn.base import is_classifier
  from sklearn.utils.validation import check_is_fitted
  import numpy
  from sklearn.base import ClassifierMixin, RegressorMixin
  from sklearn.linear_model import LogisticRegression
  from sklearn.linear_model import LinearRegression
  from ..utils._clean_x import preclean_X
  from ..utils._clean_simple import clean_dimensions, typify_classification
  from ..utils._unify_data import unify_data
label_desc: Use image node_id 1 for calling a global function with example usage: _hist_per_column(arr, feature_types) and returns: counts,  bin_edges