code: def nanargmax(a, axis=None, out=None, combine_size=None):
      """
      Return the indices of the maximum values in the specified axis ignoring
      NaNs. For all-NaN slices ``ValueError`` is raised. Warning: the
      results cannot be trusted if a slice contains only NaNs and -Infs.
  
  
      Parameters
      ----------
      a : array_like
          Input data.
      axis : int, optional
          Axis along which to operate.  By default flattened input is used.
      out : Tensor, optional
          Alternate output tensor in which to place the result.  The default
          is ``None``; if provided, it must have the same shape as the
          expected output, but the type will be cast if necessary.
          See `doc.ufuncs` for details.
      combine_size: int, optional
          The number of chunks to combine.
  
      Returns
      -------
      index_array : Tensor
          An tensor of indices or a single index value.
  
      See Also
      --------
      argmax, nanargmin
  
      Examples
      --------
      >>> import mars.tensor as mt
  
      >>> a = mt.array([[mt.nan, 4], [2, 3]])
      >>> mt.argmax(a).execute()
      0
      >>> mt.nanargmax(a).execute()
      1
      >>> mt.nanargmax(a, axis=0).execute()
      array([1, 0])
      >>> mt.nanargmax(a, axis=1).execute()
      array([1, 1])
  
      """
      op = TensorNanArgmax(
          axis=axis, dtype=np.dtype(int), combine_size=combine_size
      )
      return op(a, out=out)
  
file_path: mars/mars/tensor/reduction/nanargmax.py
imports: import numpy
  from ...None import opcodes
  from ...serialization.serializables import AnyField, TupleField
  from .core import TensorReduction, TensorArgReductionMixin
label_desc: Use image node_id 1 for calling a global function with example usage: nanargmax(a, axis, out, combine_size) and returns: op