code: def _filter_column(array, col, criteria):
      """Return index array matching criteria.
  
      Parameters
      ----------
      array : numpy array with columns
          Array in which data will be filtered.
  
      col : string
          Name of the column.
  
      criteria : integer (or float), pair of integers, string or list of these
          if integer, select elements in column matching integer
          if a tuple, select elements between the limits given by the tuple
          if a string, select elements that match the string
  
      """
      # Raise an error if the column does not exist. This is the only way to
      # test it across all possible types (pandas, recarray...)
      try:
          array[col]
      except Exception:
          raise KeyError(f"Filtering criterion {col} does not exist")
  
      if (
          not isinstance(criteria, str)
          and not isinstance(criteria, bytes)
          and not isinstance(criteria, tuple)
          and isinstance(criteria, collections.abc.Iterable)
      ):
          filter = np.zeros(array.shape[0], dtype=bool)
          for criterion in criteria:
              filter = np.logical_or(
                  filter, _filter_column(array, col, criterion)
              )
          return filter
  
      if isinstance(criteria, tuple):
          if len(criteria) != 2:
              raise ValueError("An interval must have 2 values")
          if criteria[0] is None:
              return array[col] <= criteria[1]
          if criteria[1] is None:
              return array[col] >= criteria[0]
          filter = array[col] <= criteria[1]
          return np.logical_and(filter, array[col] >= criteria[0])
  
      # Handle strings with different encodings
      if isinstance(criteria, (str, bytes)):
          criteria = np.array(criteria).astype(array[col].dtype)
  
      return array[col] == criteria
  
imports: import collections.abc
  import contextlib
  import fnmatch
  import hashlib
  import os
  import pickle
  import shutil
  import sys
  import tarfile
  import time
  import urllib
  import warnings
  import zipfile
  from pathlib import Path
  import numpy
  import requests
  from .._utils import fill_doc
  from .utils import get_data_dirs
label_desc: Use image node_id 13 for calling a global function with example usage: _filter_column(array, col, criteria) and returns: unknown, filter, np, unknown, unknown