索引从0开始
一行 [1,:]
一列[:,1]
子区域:[1:3,1:] 第一行和第二行,从第一列开始
[::3,::2] 每3行一跳,每2列一跳
torch.tensor([[1,2,3,4]]
按位置算 x+y ,x-y x*y x**y(幂)
1、广播机制形状不一样,维度一样
a=torch.arange(3) .reshape(3,1)
b=torch.arange(2).reshape(1,2)
a+b
a [[0],[1],[2]] => 复制3行2列 [[0,0],[1,1],[2,2]]
b [[0,1]] =》[[0,1],[0,1],[0,1]]
a+b =>[ [0,1]
[1,2]
[2,3]]
2、元素选择
x[-1] 最后一行
x[1:3] 第一行和第二行
x[0:2,:] =12 按区域赋值
3、id 类似指针,判断是否重新分配内存
before=id(x)
原地操作(不会新建变量)
z[:] =x+y 或者 x+=y
print(id(z))
4、转为标量,大小为1的张量
a=torch.tensor([3.5])
a.item() ,float(a), int(a)
3.5 3.5 3
5、数据切分
特征和标签: input,output=data.iloc[:,0:2],data.iloc[:,2]
填充均值: fillna(input.mean())
分类转为特征: 如果类型是bool,加入dtype=float
6、reshape 具体值是引用
a=torch.arange(12)
b=a.reshape(3,4)
id(a)==id(b) #false
id(a.values)==id(b.values) #true