给定一个Tensor,例如希望把其中大于0的元素加一,PyTorch可以用如下代码实现
```
x = torch.Tensor([[-1, 1], [2, -3]])
x[x>0] += 1
# 此时x变为[[-1, 2], [3, -3]]
```
MindSpore中看起来不支持bool类型的条件索引
```
x = ms.Tensor([[-1, 1], [2, -3]], ms.float32)
x[x>0] += 1
# 报错The tensor index must be int type, but got (mindspore.bool_,).
```
另外,PyTorch中多个bool类型的索引信息还可以运算,例如
```
# 对x中大于0小于3的元素加一
x[x > 0 * x < 3] += 1
```
MindSpore中"x > 0 * x < 3"这样的代码就会报错,提示乘法运算不支持bool类型的Tensor
解答:
目前mindspore的tensor不支持这样直接的操作,但是您暂时可以使用以下方式实现这个功能: ```python import mindspore x = mindspore.Tensor([[-1, 1], [2, -2]]) x = x.asnumpy() x[x > 0] += 1 x = mindspore.Tensor(x) print(x, type(x)) ```