code: def infer_numerical_features(df: pd.DataFrame) -> t.List[Hashable]:
      """Infers which features are numerical.
  
      Parameters
      ----------
      df : pd.DataFrame
          dataframe for which to infer numerical features
  
      Returns
      -------
      List[Hashable]
          list of numerical features
      """
      columns = df.columns
      numerical_columns = []
      for col in columns:
          col_data = df[col]
          if col_data.dtype == "object":
              # object might still be only floats, so we reset the dtype
              col_data = pd.Series(col_data.to_list())
          if is_numeric_dtype(col_data):
              numerical_columns.append(col)
      return numerical_columns
  
file_path: deepchecks/deepchecks/utils/type_inference.py
imports: import typing
  import numpy
  import pandas
  from pandas.core.dtypes.common import is_datetime64_any_dtype, is_float_dtype, is_numeric_dtype
  from typing_extensions import Literal
  from deepchecks.utils.logger import get_logger
  from deepchecks.utils.typing import Hashable
  from deepchecks.utils.validation import ensure_hashable_or_mutable_sequence
label_desc: Use image node_id 1 for calling a global function with example usage: infer_numerical_features(df) and returns: numerical_columns