---
title: "scatterWithData(_:updates:indices:axis:mode:name:)"
framework: metalperformanceshadersgraph
role: symbol
role_heading: Instance Method
path: "metalperformanceshadersgraph/mpsgraph/scatterwithdata(_:updates:indices:axis:mode:name:)"
---

# scatterWithData(_:updates:indices:axis:mode:name:)

Creates a Scatter operation and returns the result tensor.

## Declaration

```swift
func scatterWithData(_ dataTensor: MPSGraphTensor, updates updatesTensor: MPSGraphTensor, indices indicesTensor: MPSGraphTensor, axis: Int, mode: MPSGraphScatterMode, name: String?) -> MPSGraphTensor
```

## Parameters

- `dataTensor`: Tensor containing inital values of same shape as result tensor
- `updatesTensor`: Tensor containing values to be inserted into the result tensor.
- `indicesTensor`: Tensor containg the result indices to insert values at
- `axis`: The axis of the result tensor to scatter values along
- `mode`: The type of update to use on the destination
- `name`: The name for the operation.

## Return Value

Return Value A valid MPSGraphTensor object

## Discussion

Discussion Scatters the slices in updatesTensor to the result tensor along the indices in indicesTensor, on top of dataTensor. The scatter is defined as U = updates.rank  P = res.rank  res[...] = data[...]  res[i_{0},...,i_{axis-1},indices[i_{axis}],i_{axis+1},...,i_{U-1}] += updates[i_{0},...,i_{axis-1},i_{axis},i_{axis+1},...,i_{U-1}] // Note += is used but this depends on mode  Collisions will be updated according to mode. The tensors have the following shape requirements U = P  indices.rank = 1  data.shape = res.shape  updates.shape[0:axis-1] = res.shape[0:axis-1]  updates.shape[axis] = indices.shape[0]  updates.shape[axis+1:U] = res.shape[0:P]
