code: def astype(self, dtype, copy=True):
          
  
          if not copy and np.dtype(dtype) == self.dtype:
              return self
  
          res = empty(self.shape, ctx=self.context, dtype=dtype)
          self.copyto(res)
          return res
docs: Returns a copy of the array after casting to a specified type.
  
          Parameters
          ----------
          dtype : numpy.dtype or str
              The type of the returned array.
          copy : bool
              Default `True`. By default, astype always returns a newly
              allocated ndarray on the same context. If this is set to
              `False`, and the dtype requested is the same as the ndarray's
              dtype, the ndarray is returned instead of a copy.
  
          Returns
          -------
          NDArray, CSRNDArray or RowSparseNDArray
              The copied array after casting to the specified type, or
              the same array if copy=False and dtype is the same as the input
              array.
  
          Examples
          --------
          >>> x = mx.nd.zeros((2,3), dtype='float32')
          >>> y = x.astype('int32')
          >>> y.dtype
          <type 'numpy.int32'>