code: def empty(shape, ctx=None, dtype=None, stype=None):
      """Returns a new array of given shape and type, without initializing entries.
  
      Parameters
      ----------
      shape : int or tuple of int
          The shape of the empty array.
      ctx : Context, optional
          An optional device context (default is the current default context).
      dtype : str or numpy.dtype, optional
          An optional value type (default is `float32`).
      stype : str, optional
          An optional storage type (default is `default`).
  
      Returns
      -------
      NDArray, CSRNDArray or RowSparseNDArray
          A created array.
  
      Examples
      --------
      >>> mx.nd.empty(1)
      <NDArray 1 @cpu(0)>
      >>> mx.nd.empty((1,2), mx.gpu(0))
      <NDArray 1x2 @gpu(0)>
      >>> mx.nd.empty((1,2), mx.gpu(0), 'float16')
      <NDArray 1x2 @gpu(0)>
      >>> mx.nd.empty((1,2), stype='csr')
      <CSRNDArray 1x2 @cpu(0)>
      """
      if stype is None or stype == "default":
          return _empty_ndarray(shape, ctx, dtype)
      else:
          return _empty_sparse_ndarray(stype, shape, ctx, dtype)
  
file_path: mxnet/python/mxnet/ndarray/utils.py
imports: import ctypes
  from ..base import _LIB, check_call, py_str, c_str, string_types, mx_uint, NDArrayHandle
  from ..base import c_array, c_handle_array, c_str_array
  from .ndarray import NDArray
  from .ndarray import array
  from .ndarray import empty
  from .ndarray import zeros
  from .sparse import zeros
  from .sparse import empty
  from .sparse import array
  from .sparse import _ndarray_cls
label_desc: Use image node_id 2 for calling a global function with example usage: empty(shape, ctx, dtype, stype) and returns: _empty_ndarray, _empty_sparse_ndarray