Cheat Sheet速查表
跳转到主要内容

Numpy 速查表

NumPy 为 Python 提供多维数组与数值计算功能。先使用 import numpy as np 导入模块;合并数组前检查形状与数据类型。基本切片通常返回共享内存的视图,需要独立修改时使用 .copy()。

说明

下表中 arr、arr1 与 arr2 表示数组,values 表示待添加的值。示例需要具有相应形状的数组;索引从 0 开始。

导入模块

import numpy as np

导入与导出

| np.loadtxt('file.txt') | 读取文本文件 | | np.genfromtxt('file.csv',delimiter=',') | 读取以逗号分隔的 CSV 文件;支持缺失值 | | np.savetxt('file.txt',arr,delimiter=' ') | 保存为以空格分隔的文本文件 | | np.savetxt('file.csv',arr,delimiter=',') | 保存为以逗号分隔的 CSV 文件 |

创建数组

| np.array([1,2,3]) | 创建一维数组 | | np.array([(1,2,3),(4,5,6)]) | 创建二维数组 | | np.zeros(3) | 创建长度为 3 的全零数组 | | np.ones((3,4)) | 创建 3 行 4 列的全一数组 | | np.eye(5) | 创建 5 阶单位矩阵 | | np.linspace(0,100,6) | 在 0 到 100 之间生成 6 个等间隔值,包含终点 | | np.arange(0,10,3) | 从 0 开始以 3 为步长生成小于 10 的值 | | np.full((2,3),8) | 创建 2 行 3 列、所有值为 8 的数组 | | np.random.rand(4,5) | 生成 4 行 5 列的随机浮点数,范围为 [0, 1) | | np.random.rand(6,7)*100 | 生成 6 行 7 列的随机浮点数,范围为 [0, 100) | | np.random.randint(5,size=(2,3)) | 生成 2 行 3 列的随机整数,范围为 0 到 4 |

查看属性

| arr.size | 元素总数 | | arr.shape | 各个维度的长度 | | arr.dtype | 元素的数据类型 | | arr.astype(dtype) | 按指定数据类型转换元素 | | arr.tolist() | 转换为 Python 列表 | | np.info(np.eye) | 查看 np.eye 的帮助 |

复制、排序与调整形状

| np.copy(arr) | 复制到新的内存 | | arr.view(dtype) | 使用指定数据类型重新解释共享的底层内存;不是数值类型转换 | | arr.sort() | 原地沿最后一个轴排序 | | arr.sort(axis=0) | 原地沿第 0 个轴排序 | | two_d_arr.flatten() | 复制并展平为一维数组 | | arr.T | 转置数组;一维数组的形状不变 | | arr.reshape(3,4) | 返回形状为 3 行 4 列的数组;可能共享原内存 | | arr.resize((5,6)) | 原地调整为 5 行 6 列,新增位置填 0;受数组所有权等条件限制 |

添加与删除元素

| np.append(arr,values) | 返回追加元素后的新数组 | | np.insert(arr,2,values) | 在索引 2 之前插入元素并返回新数组 | | np.delete(arr,3,axis=0) | 删除索引为 3 的行并返回新数组 | | np.delete(arr,4,axis=1) | 删除索引为 4 的列并返回新数组 |

拼接与分割

| np.concatenate((arr1,arr2),axis=0) | 沿第 0 个轴拼接,其他维度必须相同 | | np.concatenate((arr1,arr2),axis=1) | 沿第 1 个轴拼接,其他维度必须相同 | | np.split(arr,3) | 沿第 0 个轴均分为 3 段,轴长度必须能被 3 整除 | | np.hsplit(arr,5) | 按列均分为 5 段,列数必须能被 5 整除 |

索引、切片与筛选

| arr[5] | 读取索引为 5 的元素 | | arr[2,5] | 读取行索引 2、列索引 5 的元素 | | arr[1]=4 | 将索引为 1 的元素赋值为 4 | | arr[1,3]=10 | 将行索引 1、列索引 3 的元素赋值为 10 | | arr[0:3] | 读取索引 0、1、2 的元素;二维数组中为相应行 | | arr[0:3,4] | 读取行索引 0、1、2 与列索引 4 对应的元素 | | arr[:2] | 读取前两个元素;二维数组中为前两行 | | arr[:,1] | 读取所有行中列索引为 1 的元素 | | arr<5 | 逐元素比较,得到布尔数组 | | (arr1<3) & (arr2>5) | 组合两个逐元素比较,得到布尔数组 | | ~arr | 对布尔数组取反;整数数组则执行按位取反 | | arr[arr<5] | 用布尔掩码选出小于 5 的元素 |

标量运算

| np.add(arr,1) | 每个元素加 1 | | np.subtract(arr,2) | 每个元素减 2 | | np.multiply(arr,3) | 每个元素乘 3 | | np.divide(arr,4) | 每个元素除以 4 | | np.power(arr,5) | 每个元素取 5 次方 |

向量运算

| np.add(arr1,arr2) | 逐元素相加 | | np.subtract(arr1,arr2) | 逐元素相减 | | np.multiply(arr1,arr2) | 逐元素相乘;矩阵乘法可使用 @ | | np.divide(arr1,arr2) | 逐元素相除 | | np.power(arr1,arr2) | 逐元素乘方 | | np.array_equal(arr1,arr2) | 判断形状与对应元素是否相同 | | np.sqrt(arr) | 逐元素求平方根 | | np.sin(arr) | 逐元素求正弦,角度单位为弧度 | | np.log(arr) | 逐元素求自然对数 | | np.abs(arr) | 逐元素求绝对值 | | np.ceil(arr) | 向上取整,结果的数据类型不一定是整数 | | np.floor(arr) | 向下取整,结果的数据类型不一定是整数 | | np.round(arr) | 舍入到最近整数值,结果的数据类型不一定是整数 |

统计

| np.mean(arr,axis=0) | 沿第 0 个轴求均值 | | arr.sum() | 所有元素求和 | | arr.min() | 所有元素中的最小值 | | arr.max(axis=0) | 沿第 0 个轴求最大值 | | np.var(arr) | 求总体方差,默认 ddof=0 | | np.std(arr,axis=1) | 沿第 1 个轴求总体标准差,默认 ddof=0 | | np.corrcoef(arr) | 计算相关系数矩阵,默认每行表示一个变量 |

官方参考