觉得有帮助请点赞关注收藏~~~
Tensor支持基本的索引和切片操作,不仅如此,它还支持ndarray中的高级索引包括整数索引和布尔索引操作。
运行实例如下
测试代码如下 代码中给出了对应注释
索引和切片与numpy中的类似,值得一提的是torch.where(condition,x,y)是用于判断condition的条件是否满足,当某个元素满足时,则返回对应矩阵x相同位置的元素,否则返回矩阵y的元素,有点类似于三目运算符
import torch import numpy as np #基本索引 a=torch.arange(9).view(3,3) print(a[2,2]) #切片 print(a[1:,:-1]) #带步长的切片 print(a[::2]) #整数索引 rows=[0,1] cols=[2,2] print(a[rows,cols]) #布尔索引 index=a>4 print(index) print(a[index]) #返回非零值的索引矩阵 index=torch.nonzero(a>=8) print(index) a=torch.randint(0,2,(3,3)) print(a) index=torch.nonzero(a) print(index) #where x=torch.randn(3,2) y=torch.ones(3,2) print(x) print(torch.where(x>0,x,y))