|
创建和生成 |
|
| 从list创建 |
np.array(list) |
|
| 从range创建 |
np.arange(int).reshape(int, int, ...) |
np.arange(start, end, step)可以指定范围和步长 |
| 按线性间隔创建 |
np.linspace(start, stop, num).reshape(int, int) |
|
| 从对数间隔创建 |
np.logspace(start, stop, num, base).reshape(int, int) |
|
| 全1 |
np.ones(int) |
|
| 全0 |
np.zeros((int, int, ...)) |
|
| 和给定array同shape的0向量 |
np.zeros_like(array) |
|
| 随机 Generator |
rng = np.random.default_rng() |
|
| 随机整数 |
rng.integers(low, high, (int, int)) |
|
| 均匀分布 |
rng.uniform(low, high, (int, int)) |
|
| 标准正态分布 |
rng.standard_normal((int, int)) |
|
| 高斯分布 |
rng.normal(loc, scale, (int, int)) |
|
| 输出0-1 连续均匀分布的一个数 |
np.random.rand() |
np.random.rand(dim1, dim2)与np.random.random((dim1,
dim2))同样功能 |
| 高斯分布 |
np.random.normal(low, high, (int, int)) |
|
| 存储单个array |
np.save(file, array) |
格式为npy |
| 存储多个array |
np.savez(file, name=array) |
格式为npz,np.savez(“./data/b”, a=np.arange(12).reshape(3, 4),
b=np.arange(12.).reshape(4, 3)) |
| 存储多个array并压缩 |
np.savez_compressed(file, name=array) |
与上一个无异 |
| 加载 |
np.load(file) |
可以加载npy、npz |
|
统计和属性 |
|
| 维度 |
arr.ndim |
|
| 形状 |
arr.shape |
|
| 数据个数 |
arr.size |
|
| 按维度取最大值 |
arr.max(aixs) |
|
| 按维度取最小值并保持维度 |
arr.min(axis, keepdims=True) |
|
| 中位数 |
np.median(arr) |
|
| 分位数 |
np.quantile(arr, q, axis) |
|
| 求和 |
np.sum(arr) |
|
| 按维度求均值 |
np.average(arr, axis) |
|
| 按维度求累加和 |
np.cumsum(arr, axis) |
|
| 标准差 |
np.std(arr) |
|
| 方差 |
np.var(arr) |
|
|
形状和转换 |
|
| 改变形状 |
arr.reshape(int, int, ...) |
可以使用-1 |
| 原地改变 |
arr.resize(int, int, ...) |
如果新arr元素数量小于旧arr的,会发生截断。arr.resize((2,3),
refcheck=False),如果元素数量不够,则会用0填充 |
| 展平 |
arr.ravel() |
arr.flatten() ,返回copy |
| 扩展1维度 |
np.expand_dims(arr, axis) |
|
| 去掉1维度 |
np.squeeze(arr, axis) |
指定 axis 的shape必须为1 |
| 反序 |
arr[::-1] |
|
| 列反序 |
arr[:, ::-1] |
|
| 行反序 |
arr[::-1, :] |
|
| 二维转置 |
arr.T |
|
| 高维转置 |
np.transpose(arr, axes) |
|
|
分解和组合 |
|
| 删除元素 |
np.delete(arr, 1, 0) |
删除arr的第0维的第1行 |
| 索引 |
arr[int] |
|
| 范围索引 |
arr[int: int] |
|
| 离散索引 |
arr[[int, int]] |
|
| 范围+离散 |
arr[int:int, int] |
|
| 范围+范围 |
arr[int:int, int:int] |
|
| 离散+离散 |
arr[[int, int], [int, int]] |
|
| 步长跳跃 |
arr[start: end: step] |
|
| 多维度步长跳跃 |
arr[start: end: step, start: end: step] |
|
| 按维度拼接 |
np.concatenate((arr1, arr2), axis) |
默认第0维 |
| 按维度堆叠 |
np.stack((arr1, arr2), axis) |
默认第0维,拓展新维度并堆叠 |
| 重复 |
np.repeat(arr, int, axis) |
|
| 按维度切分 |
np.split(arr, parts, axis) |
|
|
筛选和过滤 |
|
| 筛选 |
np.where(condition) |
会返回多个维度的坐标 |
| 筛选后赋值 |
np.where(condition, arr, not_satisfy_condition_with_new_val) |
如果不满足条件则用new_val替代 |
| 提取 |
np.extract(condition, arr) |
返回值,一维向量 |
| 唯一值 |
np.unique(arr) |
|
| 抽样 |
np.random.choice(arr, int, bool) |
bool代表结果是否可以重复,返回坐标 |
| 按维度取最大值index |
np.argmax(arr, axis) |
|
| 按维度排序的索引 |
np.argsort(arr, axis) |
|
| 返回满足条件的索引 |
np.argwhere(arr) |
|
|
矩阵和运算 |
|
| 四则运算 |
arr [+-*/] num |
|
| 其他运算 |
np.[sqrt/floor/round/mod](arr) |
|
| array乘法 |
np.dot(arr1, arr2) |
|
| array乘法 |
np.matnul(arr1, arr2) |
|
| 点积 |
np.vdot(arr1, arr2) |
np.sum(arr1*arr2) |
| 内积 |
np.inner(arr1, arr2) |
向量的内积 |
| 行列式 |
np.linalg.det(arr) |
|
| 逆矩阵 |
np.linalg.inv(arr) |
|
| log |
np.log(arr) |
|
| 向下取整、向上取整 |
np.floor(arr)、np.ceil(arr) |
|
| 四舍五入,保留int位 |
np.round(arr,int) |
|
| mod |
np.mod(arr, val) |
arr%val |
| 最小公倍数 |
np.lcm(val1,val2) or
np.lcm.reduce(list) |
后者可以对多个数同时 |
| 最大公约数 |
np.gcd(val1, val2) or
np.gcd.reduce(list) |
|
| 累差 |
np.diff(arr,int,axis) |
沿着axis轴计算第int维的离散差值 |
| 符号函数 |
np.sign(arr) |
|
| 截断 |
np.clip(arr,a_min,a_max) |
|
| 多项式 |
p = np.polynomial.Polynomial([3, 2, 1]) |
3x+2x+x**2 |
| 逻辑和 |
np.logical_and(arr1,arr2) |
|
| 判断所有值是否在阈值范围内 |
np.allclose |
|
| 叉积 |
np.cross(a, b) |
外积 np.outer(a, b),克罗内克积np.kron(a,b) |
| 以特征值为对角线的方阵 |
np.diag(list) |
|
| Einsum |
np.einsum() |
|