mindspore.ops.index_fill

mindspore.ops.index_fill(x, dim, index, value)[源代码]

index 中给定的顺序选择索引,将输入 value 值填充到输入Tensor x 的所有 dim 维元素。

参数:

  • x (Tensor) - 输入Tensor,支持的数据类型是数值型和布尔型。

  • dim (Union[int, Tensor]) - 填充输入Tensor的维度,要求是一个int或者数据类型为int32或int64的0维Tensor。

  • index (Tensor) - 填充输入Tensor的索引,数据类型为int32。

  • value (Union[bool, int, float, Tensor]) - 填充输入Tensor的值。如果 value 是Tensor,那么 value 要求是数据类型与 x 相同的0维Tensor。否则,该值会自动转化为一个数据类型与 x 相同的0维Tensor。

返回:

填充后的Tensor。shape和数据类型与输入 x 相同。

异常:

  • TypeError - x 的类型不是Tensor。

  • TypeError - dim 的类型不是int或者Tensor。

  • TypeError - 当 dim 是Tensor时, dim 的数据类型不是int32或者int64。

  • TypeError - index 的类型不是Tensor。

  • TypeError - index 的数据类型不是int32。

  • TypeError - value 的类型不是bool、int、float或者Tensor。

  • TypeError - 当 value 是Tensor时, value 的数据类型和 x 的数据类型不相同。

  • ValueError - 当 dim 是Tensor时, dim 的维度不等于0。

  • ValueError - index 的维度大于1。

  • ValueError - 当 value 是Tensor时, value 的维度不等于0。

  • RuntimeError - dim 值超出范围[-x.ndim, x.ndim - 1]。

  • RuntimeError - index 存在值超出范围[-x.shape[dim], x.shape[dim]-1]。

支持平台:

GPU

样例:

>>> import mindspore
>>> import mindspore.ops as ops
>>> from mindspore import Tensor
>>> x = Tensor(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]).astype(np.float32))
>>> index = Tensor([0, 2], mindspore.int32)
>>> value = Tensor(-2.0, mindspore.float32)
>>> y = ops.index_fill(x, 1, index, value)
>>> print(y)
[[-2. 2. -2.]
 [-2. 5. -2.]
 [-2. 8. -2.]]