mindspore.Tensor.scatter_div
- Tensor.scatter_div(indices, updates)[source]
Creates a new tensor by dividing the values from the positions in self tensor indicated by indices, with values from updates. When divided values are provided for the same index, the result of the update will be to divided these values respectively. Except that the updates are applied on output Tensor instead of input Parameter.
The last axis of indices is the depth of each index vectors. For each index vector, there must be a corresponding value in updates. The shape of updates should be equal to the shape of input_x[indices], the variable input_x refers to self tensor. For more details, see use cases.
Note
If some values of the indices are out of bound, instead of raising an index error, the corresponding updates will not be updated to input_x.
The operator can’t handle division by 0 exceptions, so the user needs to make sure there is no 0 value in updates.
- Parameters
- Returns
Tensor, has the same shape and type as self tensor.
- Raises
TypeError – If dtype of indices is neither int32 nor int64.
ValueError – If length of shape of self tensor is less than the last dimension of shape of indices.
- Supported Platforms:
GPU
CPU
Examples
>>> import numpy as np >>> from mindspore import Tensor >>> input_x = Tensor(np.array([[-0.1, 0.3, 3.6], [0.4, 0.5, -3.2]]).astype('float32')) >>> indices = Tensor(np.array([[0, 0], [0, 0]]).astype('int32')) >>> updates = Tensor(np.array([1.0, 2.0]).astype('float32')) >>> output = input_x.scatter_div(indices, updates) >>> print(output) [[-0.05 0.3 3.6 ] [ 0.4 0.5 -3.2 ]]