code: def match(
      v1, v2, nomatch=-1, incomparables=None, start=0
  ) -> npt.NDArray[np.int64]:
      """
      Return a vector of the positions of (first)
      matches of its first argument in its second.
  
      Parameters
      ----------
      v1: array_like
          the values to be matched
  
      v2: array_like
          the values to be matched against
  
      nomatch: int
          the value to be returned in the case when
          no match is found.
  
      incomparables: array_like
          a list of values that cannot be matched.
          Any value in v1 matching a value in this list
          is assigned the nomatch value.
      start: int
          type of indexing to use. Most likely 0 or 1
      """
      # NOTE: This function gets called a lot. If it can
      # be optimised, it should.
      lookup = {}
      for i, x in enumerate(v2):
          if x not in lookup:
              lookup[x] = i
  
      if incomparables:
          skip = set(incomparables) if incomparables else set()
          lst = [
              lookup[x] + start
              if x not in skip and x in lookup
              else nomatch
              for x in v1
          ]
      else:
          lst = [
              lookup[x] + start if x in lookup else nomatch for x in v1
          ]
      return np.array(lst)
  
imports: from __future__ import annotations
  import inspect
  import itertools
  import warnings
  from collections import defaultdict
  from collections.abc import Iterable, Sequence
  from contextlib import suppress
  from typing import TYPE_CHECKING, cast, overload
  from warnings import warn
  import numpy
  import pandas
  from pandas.core.groupby import DataFrameGroupBy
  from ..exceptions import PlotnineError, PlotnineWarning
  from ..mapping import aes
label_desc: Use image node_id 4 for calling a global function with example usage: match(v1, v2, nomatch, incomparables, start) and returns: np