parameters: (op_name, imperative=True, symbolic=True)
return_statement: return _register_helper
docstring: Register operators that fallback to NumPy in modules
      ``mxnet.ndarray.numpy._internal`` and ``mxnet.symbol.numpy._internal``.
docstring_summary: Register operators that fallback to NumPy in modules
      ``mxnet.ndarray.numpy._internal`` and ``mxnet.symbol.numpy._internal``.
docstring_tokens: Register operators that fallback to NumPy in modules mxnet . ndarray . numpy . _internal and mxnet . symbol . numpy . _internal .
function: def register(op_name, imperative=True, symbolic=True):
      """Register operators that fallback to NumPy in modules
      ``mxnet.ndarray.numpy._internal`` and ``mxnet.symbol.numpy._internal``."""
      def _save_op(mod):
          if hasattr(mod, op_name):
              raise ValueError('Duplicate name {} found in module {}'.format(op_name, str(mod)))
          op = functools.partial(mod.Custom, op_type=op_name)
          setattr(mod, op_name, op)
  
      def _register_helper(prop_cls):
          with np_array():
              prop_cls = operator.register(op_name)(prop_cls)
          if imperative:
              _save_op(_nd_npi)
          if symbolic:
              _save_op(_sym_npi)
          return prop_cls
  
      return _register_helper
function_tokens: def register ( op_name , imperative = True , symbolic = True ) : def _save_op ( mod ) : if hasattr ( mod , op_name ) : raise ValueError ( 'Duplicate name {} found in module {}' . format ( op_name , str ( mod ) ) ) op = functools . partial ( mod . Custom , op_type = op_name ) setattr ( mod , op_name , op ) def _register_helper ( prop_cls ) : with np_array ( ) : prop_cls = operator . register ( op_name ) ( prop_cls ) if imperative : _save_op ( _nd_npi ) if symbolic : _save_op ( _sym_npi ) return prop_cls return _register_helper