code: def _scatter_nd_impl(data, indices, updates, reduction=None):  # type: ignore
      output = np.copy(data)
      for i in np.ndindex(indices.shape[:-1]):
          if reduction == "add":
              output[tuple(indices[i])] += updates[i]
          elif reduction == "mul":
              output[tuple(indices[i])] *= updates[i]
          elif reduction == "max":
              output[tuple(indices[i])] = np.maximum(
                  output[indices[i]], updates[i]
              )
          elif reduction == "min":
              output[tuple(indices[i])] = np.minimum(
                  output[indices[i]], updates[i]
              )
          else:
              output[tuple(indices[i])] = updates[i]
      return output
  
imports: import numpy
  from onnx.reference.op_run import OpRun
label_desc: Use image node_id 1 for calling a global function with example usage: _scatter_nd_impl(data, indices, updates, reduction) and returns: output