numpy
学完第一感觉,相见恨晚
那我浅浅做个知识点总结,方便以后查找
Array创建和生成
方式:
- 列表、元组
- arange()
- linspace()/logspace() (常用)
- ones()/zeros() (自己常用)
- random() (常用)
- 读取文件
具体内容参照专栏其他博客
统计和属性
numpy 具有基本的统计属性
主要内容:
- 尺寸相关
- 最大、最小、中位、分位值
- 平均、求和、标准差等
尺寸:维度、形状、数据量
- 维度 arr.ndim
- 形状 arr.shape
- 数据量 arr.size
最值分位
- 最大/小值 arr.max/arr.amax arr.min
- 中位数 np.median()
- 分位数 (1/4)np.quantile() (keepdims=True 保持维度)
平均数 标准差
- 平均值 np.average()
- 求和 np.sum()
- 累计求和 np.cumsum() (按行或者按列)
- 标准差 std()
- 方差 np.var()
形状和转换
内容:
- 改变形状
- 反序
- 转置
改变形状
- 扩展一维 expand_dima
- 去除一维 squeeze
- 改变形状 reshape resize(不会自己生成新的array)
- 降为一维 ravel
反序
- 一维 arr[::-1]
- 二维 arr[::-1,:] ,arr[:,::-1], arr[::-1,::-1]
转置
- 一维(转置不变) 和二维 arr.T
- 超过二维建议 np.transpose
分解和组合
- 切片和索引
- 拼接
- 重复
- 分拆
切片和索引
重点:
切片和索引是通过对已有 array 进行操作而得到想要的「部分」元素的行为过程。其核心动作可以概括为:按维度根据 start:stop:step
操作 array。
不同的方式:
- 取第 0 行 arr[0]
- 取第 0 行第 1 个元素 arr[0, 1]
- 第 1-2 行 arr[1:3]
- 第 1,3 行 arr[[1, 3]]
- 第 1-2 行,第 1 列 arr[1:3, 1]
- 第 1,3 行,第 0 列 arr[[1,3], [0]]
- 第 3 行到最后一行 arr[3:]
- 第 1-3 列 arr[:3, 1:3]
- 第 1 行到第 4 行,间隔为 2,即第 1、3 arr[1: 4: 2]
- 第 1、3 行,第 0、2 列 arr[1:4:2, 0:3:2]
- 第一列的值,其实是所有其他维度第 1 维的值 arr[…,1]
- 与上面类似,但用的更多 arr[:,1]
拼接
- np.concatenate
- np.stack
- np.hstack/np.vstack(和stack没有关系)
重复
重复可以指定要重复的维度。需要注意的是:是一个维度一个维度依次重复,而不是整个 array 重复。
- np.repeat
分拆
- `np.split
- np.vsplit /np.hsplit
筛选 过滤
- 条件筛选
- 提取(按条件)
- 抽样(按分布)
- 最大最小 index(特殊值)
条件筛选
- np.where
提取
注意:提取和唯一值返回的都是一维向量
- 按条件提取 np.extract()
- 另一种提取方式 np.unique()
抽样
- np.random
最值
- np.argmax/np.argmin
- np.argsort
矩阵运算
- 算术(四则运算及其他基础算术)
- 广播
- 矩阵相关
算术
- 四则运算
- 平方 arr**2
- 开方 np.sqrt
- 四舍五入 np.round
- 区间最小 最大 floor cell
- 余数 mod
广播
具体可以看其他详细资料
矩阵
注意:dot
和 matmul
在高维度时表现不同,与 dot 的主要区别是:如果维度 > 2,dot 只考虑最后的维度,而 matmul 则考虑所有维度
- 乘法 dot(a,b) 或者a.dot(b) np.matmul(a,b) 或者 a@b
- 点积 np.vdot 或者 np.sum(a*a)
- 内积 np.inner(a,a) 或者a.dot(a,T)
- 行列式 np.linalg.det()
- 逆矩阵 np.linalg.inv()
以上就是总结啦!下次继续!!!