PyTorch 常用操作

张量方法

函数/属性 说明 示例
torch.tensor() 创建张量(已有输入数据) x = torch.tensor([1, 2, 3])
torch.zeros() 创建指定形状全零张量 x = torch.zeros(2, 3)
torch.ones() 创建指定形状全一张量 x = torch.ones(3)
torch.arange() 创建整数顺序序列(start,end,默认step=1) x = torch.arange(0, 10)
x.shape / .size() 查看张量形状 x.shape
x.view() / .reshape() 改变张量形状 (不改变数据顺序) x.view(2, 3)
x.unsqueeze() 在指定维度增加大小为1维度 x.unsqueeze(0)
x.squeeze() 去除所有或指定大小为1的维度 x.squeeze()
x.numpy() 转为 NumPy数组 x.numpy()
torch.cat() 拼接张量 torch.cat([a, b], dim=0)

张量属性

属性 说明 示例
x.shape 张量的形状 (各维度大小) x.shape
x.size() shape,返回张量形状 x.size()
x.dtype 张量的数据类型(如dtype=float32) x.dtype
x.device 张量所在设备(CPU/GPU) x.device
x.requires_grad 自动求导(自构建计算图) x.requires_grad
x.dim() 张量的秩/维度 x.dim()
keepdim (参数) 保持降维的维度(保持维度为1) torch.sum(x, dim=1, keepdim=True)

张量初始化与随机操作

函数 说明 示例
torch.zeros(shape) 创建指定形状的全零张量,shape是生成张量的形状 torch.zeros((2, 3))
torch.ones(shape) 创建指定形状的全一张量 torch.ones(4)
torch.arange(start, end, step) 创建等差整数序列张量 torch.arange(0, 5, 1)
torch.rand(shape) 创建指定形状数值在 [0, 1) 区间均匀分布的随机张量 torch.rand(2, 3)
torch.randn(shape) 创建指定形状均值 0,标准差 1 的标准正态分布随机张量 torch.randn(3)
torch.normal(mean, std, size) 创建正态分布随机张量(mean均值,std标准差) torch.normal(mean=0.0, std=1.0, size=(2,3))
torch.manual_seed(seed) 设置随机数种子,种子数字不变随机数序列相同,数字是几无所谓不变就行 torch.manual_seed(42)

数学运算

函数 说明 示例
torch.sum() 求和 torch.sum(x)
torch.mean() 求平均 torch.mean(x)
torch.max() 最大值 torch.max(x)
torch.abs() 绝对值 torch.abs(x)
torch.clamp() 限制范围 torch.clamp(x, 0, 1)

线性代数

函数 说明 示例
torch.mm(A, B) 矩阵乘法(Matrix Multiplication),仅限二维矩阵 C = torch.mm(A, B)
torch.matmul(A, B) / A @ B 广播矩阵乘法,支持高维张量(mm的完全上位,可直接替代) C = A @ B
torch.mv(A, v) 矩阵与向量乘法(Matrix-Vector Multiplication) y = torch.mv(A, v)
torch.dot(x, y) 向量点积(Dot Product),一维张量 d = torch.dot(x, y)
torch.norm(x, p=2) 求得张量的范数,p 表示范数类型,默认是2范数(欧几里得范数) n = torch.norm(x)
torch.linalg.inv(A) 矩阵求逆,仅限方阵 A_inv = torch.linalg.inv(A)
torch.linalg.solve(A, b) 求解线性方程组 $Ax = b$ x = torch.linalg.solve(A, b)
torch.transpose(A, dim0, dim1) 转置张量指定两个维度 A_t = torch.transpose(A, 0, 1)
torch.t(A) 矩阵转置(仅限二维矩阵,等同于 transpose(0,1)) A_t = torch.t(A)

神经网络核心

模块或函数 说明 示例
nn.Linear() 线性层 nn.Linear(10, 5)
nn.ReLU() 激活函数 nn.ReLU()
nn.CrossEntropyLoss() 分类损失函数 loss_fn = nn.CrossEntropyLoss()
optimizer.step() 优化器更新 optimizer.step()
loss.backward() 反向传播 loss.backward()

NumPy 常用函数和方法

功能分类 方法示例 说明
数组属性 .shape 获取数组形状
.dtype 获取数据类型
.ndim 获取维度数
.size 元素总数
数学运算 np.add(a, b) 加法,支持广播
np.subtract(a, b) 减法
np.multiply(a, b) 乘法
np.divide(a, b) 除法
np.power(a, b) 幂运算
np.sqrt(a) 平方根
np.exp(a) 指数
np.log(a) 自然对数
np.round(a, decimals=0) 四舍五入
聚合函数 np.sum(a, axis=None) 求和
np.mean(a, axis=None) 均值
np.median(a, axis=None) 中位数
np.std(a, axis=None) 标准差
np.var(a, axis=None) 方差
np.min(a, axis=None) 最小值
np.max(a, axis=None) 最大值
np.argmax(a, axis=None) 最大值索引
np.argmin(a, axis=None) 最小值索引
线性代数 np.dot(a, b) 点积/矩阵乘法
np.matmul(a, b) 矩阵乘法
np.transpose(a) 转置
np.linalg.inv(a) 矩阵求逆
np.linalg.det(a) 行列式
np.linalg.eig(a) 特征值和特征向量
形状变换 np.reshape(a, newshape) 重塑数组
np.flatten(a) 展平数组
np.concatenate((a, b), axis=0) 拼接数组
np.split(a, indices_or_sections) 分割数组
np.expand_dims(a, axis) 增加维度
np.swapaxes(a, axis1, axis2) 交换指定轴
随机数 np.random.rand(d0, d1, ...) 均匀分布随机数
np.random.randn(d0, d1, ...) 标准正态分布随机数
np.random.randint(low, high, size) 整数随机数
数组生成 np.arange(start, stop, step) 按步长生成等差序列
np.linspace(start, stop, num) 生成等间隔数列
np.tile(a, reps) 重复数组
复制与唯一 np.copy(a) 复制数组
np.unique(a) 找唯一值
逻辑和条件 np.where(condition, x, y) 条件选择
np.any(a, axis=None) 是否任意满足条件
np.all(a, axis=None) 是否全部满足条件
范围限制 np.clip(a, a_min, a_max) 限制数组元素范围
数组操作 np.roll(a, shift, axis=None) 滚动数组
数组构造 np.zeros(shape) 生成全 0 数组
np.ones(shape) 生成全 1 数组
np.full(shape, fill_value) 生成指定值填充的数组
np.eye(N) 生成单位矩阵(对角为 1)
np.identity(n) 生成 n 阶单位矩阵
转换函数 np.asarray(a) 转换为数组(避免复制)
np.array(a) 转换为数组(复制数据)
np.astype(dtype) 类型转换

Pandas 常用方法

功能分类 方法示例 说明
创建数据结构 pd.Series(data) 创建一维数据,类似数组
pd.DataFrame(data) 创建二维表格数据
查看数据 .head(n) 查看前 n 行
.tail(n) 查看后 n 行
.info() 数据框信息摘要
.describe() 统计汇总
索引与选择 .loc[row_labels, col_labels] 根据标签索引行列
.iloc[row_indices, col_indices] 根据位置索引行列
.at[row_label, col_label] 快速访问单个元素
.iat[row_index, col_index] 快速访问单个元素
过滤和条件 df[df['col'] > value] 条件筛选
.query('col > value') 字符串条件筛选
新增列 df['new_col'] = data 添加新列
删除 .drop(columns=['col1', 'col2']) 删除列
.drop(index=[0,1]) 删除行
排序 .sort_values(by='col') 按某列排序
缺失值处理 .isnull() 判断缺失值
.dropna() 删除缺失值
.fillna(value) 填充缺失值
聚合 .groupby('col').sum() 按列分组求和
.groupby('col').agg(['mean','max']) 多聚合函数
合并与连接 pd.concat([df1, df2]) 拼接数据
pd.merge(df1, df2, on='key') 数据库风格合并
数据导入导出 pd.read_csv('file.csv') 读取CSV文件
.to_csv('file.csv') 保存为CSV