code: def cartesian_product(arrays, flat=True, copy=False):
      
      arrays = np.broadcast_arrays(*np.ix_(*arrays))
      if flat:
          return tuple(arr.flatten() if copy else arr.flat for arr in arrays)
      return tuple(arr.copy() if copy else arr for arr in arrays)
docs: Efficient cartesian product of a list of 1D arrays returning the
      expanded array views for each dimensions. By default arrays are
      flattened, which may be controlled with the flat flag. The array
      views can be turned into regular arrays with the copy flag.