230320 P2 数据操作与预处理
x=torch.arrange(12)
创建一维张量,元素为0-11
x.reshape(3,4)
修改张量为二维张量,三行四列
其他
x.shape
查看张量维数
torch.zeros(x,y,z,....)
创建全0张量,x,y,z..指各维度长度,可塞入元组或列表
torch.randn(*size)
创建服从标准正态分布的张量
torch.ones(*size)
创建全一张量
x.numel()
张量总计元素数
torch.tensor([[....]])
也可以从python列表创建张量
同维张量间加减乘除与求幂运算**都是按元素运算
X==Y,X>Y
对二维张量进行逻辑运算
Z=torch.cat((X,Y),dim=0
对张量进行连结计算,dim=0指沿轴0拼接(按行上下拼接),dim=1指按列左右拼接
其他
torch.exp(X)
以e为底指数运算
X.sum()
对张量所有元素求和。dim可以指定按维度
会适当复制元素来扩展1个或2个数组,以便使两个张量有相同的形状 然后再按元素操作
主要用于向量和张量,标量和张量之间的运算
与numpy基本一致,切片时左开右闭
X[-1]
最后一行
X[:,2]
第三列
X[1,2]
定位到第二行第三列
X[0:2,0:2]
第一行到第二行,第一列到第二列这一区块
1.另开一个公共变量专门用于存放计算结果
Z[:]=X+Y
2.用+=等运算符
X+=Y
ndarray = t.numpy()
张量转numpy ndarray
t = torch.tensor(ndarray)
ndarray转张量
张量转标量
其他
使用pandas
pandas.read_csv()
插值法,插入一个值来替代
# 插入的是平均值
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
inputs = inputs.fillna(inputs.mean())
#将字符串这种无法求平均值的项,转化为01特征(是否为NaN)
inputs = pd.get_dummies(inputs, dummy_na=True)
删除法,删掉缺失值
# 删除nans数量最多的列
# isna()判断矩阵元素是否为na,sum()列求和 ,再max得到nan最多列有多少个nan
# dropna会丢掉含nan的项,axis=1指定丢弃列,thresh指当该列/行nan个数达到多少时再删除
inputs_ = inputs_.dropna(axis=1, thresh=max(inputs_.isna().sum()))
dataframe转张量
X, y = torch.tensor(inputs.values), torch.tensor(outputs.values)
在jupyter中先用鼠标选中,在按下tap+shift,可以查看官方文档