code: def ix_(*args):
      """
      Construct an open mesh from multiple sequences.
  
      This function takes N 1-D sequences and returns N outputs with N
      dimensions each, such that the shape is 1 in all but one dimension
      and the dimension with the non-unit shape value cycles through all
      N dimensions.
  
      Using `ix_` one can quickly construct index arrays that will index
      the cross product. ``a[np.ix_([1,3],[2,5])]`` returns the array
      ``[[a[1,2] a[1,5]], [a[3,2] a[3,5]]]``.
  
      Parameters
      ----------
      args : 1-D sequences
          Each sequence should be of integer or boolean type.
          Boolean sequences will be interpreted as boolean masks for the
          corresponding dimension (equivalent to passing in
          ``np.nonzero(boolean_sequence)``).
  
      Returns
      -------
      out : tuple of ndarrays
          N arrays with N dimensions each, with N the number of input
          sequences. Together these arrays form an open mesh.
  
      See Also
      --------
      ogrid, mgrid, meshgrid
  
      Examples
      --------
      >>> a = np.arange(10).reshape(2, 5)
      >>> a
      array([[0, 1, 2, 3, 4],
             [5, 6, 7, 8, 9]])
      >>> ixgrid = np.ix_([0, 1], [2, 4])
      >>> ixgrid
      (array([[0],
             [1]]), array([[2, 4]]))
      >>> ixgrid[0].shape, ixgrid[1].shape
      ((2, 1), (1, 2))
      >>> a[ixgrid]
      array([[2, 4],
             [7, 9]])
  
      >>> ixgrid = np.ix_([True, True], [2, 4])
      >>> a[ixgrid]
      array([[2, 4],
             [7, 9]])
      >>> ixgrid = np.ix_([True, True], [False, False, True, False, True])
      >>> a[ixgrid]
      array([[2, 4],
             [7, 9]])
  
      """
      out = []
      nd = len(args)
      for k, new in enumerate(args):
          new = asarray(new)
          if new.ndim != 1:
              raise ValueError("Cross index must be 1 dimensional")
          if new.size == 0:
              # Explicitly type empty arrays to avoid float default
              new = new.astype(_nx.intp)
          if issubdtype(new.dtype, _nx.bool_):
              (new,) = new.nonzero()
          new = new.reshape(
              (1,) * k + (new.size,) + (1,) * (nd - k - 1)
          )
          out.append(new)
      return tuple(out)
  
imports: from __future__ import division, absolute_import, print_function
  import functools
  import sys
  import math
  import numpy.core.numeric
  from numpy.core.numeric import asarray, ScalarType, array, alltrue, cumprod, arange, ndim
  from numpy.core.numerictypes import find_common_type, issubdtype
  import numpy.matrixlib
  from .function_base import diff
  from numpy.core.multiarray import ravel_multi_index, unravel_index
  from numpy.core.overrides import set_module
  from numpy.core import overrides, linspace
  from numpy.lib.stride_tricks import as_strided
label_desc: Use image node_id 2 for calling a global function with example usage: ix_() and returns: tuple