class_docstr: Construct a multi-dimensional "meshgrid".
  
  ``grid = nd_grid()`` creates an instance which will return a mesh-grid
  when indexed.  The dimension and number of the output arrays are equal
  to the number of indexing dimensions.  If the step length is not a
  complex number, then the stop is not inclusive.
  
  However, if the step length is a **complex number** (e.g. 5j), then the
  integer part of its magnitude is interpreted as specifying the
  number of points to create between the start and stop values, where
  the stop value **is inclusive**.
  
  If instantiated with an argument of ``sparse=True``, the mesh-grid is
  open (or not fleshed out) so that only one-dimension of each returned
  argument is greater than 1.
  
  Args:
      sparse (bool, optional): Whether the grid is sparse or not.
          Default is False.
  
  .. seealso:: :data:`numpy.mgrid` and :data:`numpy.ogrid`
code: def __init__(self, sparse=False):
      self.sparse = sparse
  
file_path: cupy/cupy/_creation/ranges.py
imports: import math
  import numpy
  import cupy
  from cupy import _core
label_desc: Use image node_id 1 to create a new nd_grid object from inherited base classes: object with example: obj = nd_grid(sparse)