code: def gridmake(*arrays):
      
      if all([i.ndim == 1 for i in arrays]):
          d = len(arrays)
          if d == 2:
              out = _gridmake2(*arrays)
          else:
              out = _gridmake2(arrays[0], arrays[1])
              for arr in arrays[2:]:
                  out = _gridmake2(out, arr)
  
          return out
      else:
          raise NotImplementedError("Come back here")
docs: Expands one or more vectors (or matrices) into a matrix where rows span the
      cartesian product of combinations of the input arrays. Each column of the
      input arrays will correspond to one column of the output matrix.
  
      Parameters
      ----------
      *arrays : tuple/list of np.ndarray
                Tuple/list of vectors to be expanded.
  
      Returns
      -------
      out : np.ndarray
            The cartesian product of combinations of the input arrays.
  
      Notes
      -----
      Based of original function ``gridmake`` in CompEcon toolbox by
      Miranda and Fackler
  
      References
      ----------
      Miranda, Mario J, and Paul L Fackler. Applied Computational Economics
      and Finance, MIT Press, 2002.