code: def outer(u: dict, v: dict) -> dict:
      """Outer-product between two vectors.
  
      Parameters
      ----------
      u
      v
  
      Examples
      --------
  
      >>> import pprint
      >>> from river import utils
  
      >>> u = dict(enumerate((1, 2, 3)))
      >>> v = dict(enumerate((2, 4, 8)))
  
      >>> uTv = utils.math.outer(u, v)
      >>> pprint.pprint(uTv)
      {(0, 0): 2,
          (0, 1): 4,
          (0, 2): 8,
          (1, 0): 4,
          (1, 1): 8,
          (1, 2): 16,
          (2, 0): 6,
          (2, 1): 12,
          (2, 2): 24}
  
      """
      return {
          (ki, kj): vi * vj
          for (ki, vi), (kj, vj) in itertools.product(
              u.items(), v.items()
          )
      }
  
imports: from __future__ import annotations
  import functools
  import itertools
  import math
  import operator
  import numpy
  import scipy
label_desc: Use image node_id 3 for calling a global function with example usage: outer(u, v) and returns: unknown