Numpy
Python的数学库 包含了高端的数组操作 是很多其他库的底层数据形式: torch,matplotlib,pandas...
ndarray
ndarray是Numopy最重要的对象
ndarray的内容为:
指向数据的指针
数据类型
shape形状
stride
举个例子 假设我有一个1055行 1024列的数组 它的shape为(1055,1024)
实际上它的存储是线性的 那么相当于一个线性的数组
[
[a,..,1024个],
[b,..,1024个],
..1055个
]
所以它沿着第0维移动 也就是同一行移动一个 要经过一个元素
所以strides[0] = 1 (当然这个是字节 1*数据类型的长度)
而沿着第1维移动 就是从第一列到第二列 需要一次经过1024个
所以strides(1len,1024len)
成员
ndim: 数组的秩 即数组的维度或轴的数量shape: 数组的维度size: 元素总数dtype: 内部dtype类型itemsize: 内部元素的大小flags: 内存布局信息data: 内部实际存储的缓冲区T: 转置
方法
变形与操作
reshape(shape): 变形flatten(): 展平一维ravel(): 返回视图squeeze(): 去掉维度为1的轴
维度统计
argmax(dim): 给定维度上最大值的索引argmin(dim): 同理sum(dim): 给定维度求和mean(dim): 给定维度的均值var(dim): 给定维度的方差std(dim): 给定维度的标准差prod(dim): 给定维度的积
合并
concat(arrays,axis): 沿axis轴合并 数组维度必须匹配除了拼接轴以外的所有维度stack(arrays,axis): 沿axis轴合并 增加一个新的维度 所有数组形状必须完全相同block(arrays): 块状拼接 对应拼接方向上尺寸匹配
快速傅立叶变换
一般用scipy.fft
线性代数
dot: 点积outer: 外积matmul: 矩阵乘法kron: 科洛内克积
数学
sin/cos/tan/arcsin/arccos/arctan: 三角函数degrees/radians: 角度弧度的转换sinh/cosh/tanh/arcsinh/arccosh/arctanh: 双曲三角函数exp: e的指数log: 自然对数
numpy
numpy主模块
常量
e: 2.718...euler_gamma: 0.577.. 就是调和级数和自然对数的差的极限inf: 无穷大nan: NaNpi: 圆周率
ndarray的构建函数
empty(shape): 按照形状创建数组empty_like(array): 按照array的形状和类型创建空数组eye(n,m,k=0): 返回一个n*m对角线矩阵(对角线为1) k为对角线偏移identity(n): n*n单位矩阵ones(shape): 全1的矩阵ones_like(array): 和array形状类型一样的全1矩阵zeros(shape): 全0矩阵full(shape,value): 全是value矩阵arange(start,stop): 起点到终点 公差为1的向量linspace(start,end,num): 在start到end之间 有num个均匀的点的向量