Python 的强大就不多说了,而对于 Numpy 的教程网上也多得数不清,这里只是将 Numpy 在日常中的实用方法做个梳理小结,方便以后查阅上手。
简介
对于数据科学,它是 Python 创建的所有更高层工具的基础,因为它和最基础的数据结构–矩阵有关。其核心也就是这个多维矩阵(n-dimesional array),这是一个表示多维度、同质并且固定大小的阵列。Numpy 这个库提供了以下内容:
- N维数组,一种多维度、同质、能快速、高效使用内存的阵列 。
- 提供基于矩阵的数学运算
- 提供线性代数,傅里叶变换和随机数生成
多维矩阵
Numpy 的主要对象是多维矩阵(ndarray),这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格。在 Numpy 中维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank)。其有如下属性:
- ndim
矩阵轴的个数,也就是秩 - shape
矩阵的维度 - size
矩阵元素的总个数,等于shape属性中所有元素的乘积 - dtype
矩阵中元素类型 - itemsize
矩阵中每个元素的字节大小 - data
包含实际矩阵存放在内存的地址 - I
矩阵的逆,等价于linalg.pinv,而不等价于linalg.inv - T
矩阵的转置,等价于ndarray.transpose().
多维矩阵(ndarray)除了基本属性外,还有很多处理函数。
构建
- reshape/flatten
重构矩阵/将矩阵拉伸成一维向量,等价于ndarry.reshape(ndarray.size) - copy/fill
深拷贝矩阵(直接赋值只是浅拷贝)/向矩阵中填充数值,和memset功能类似 - sort
对矩阵进行排序
- reshape/flatten
提取
- clip/diagonal
提取范围里的元素/提取对角线上的元素
- clip/diagonal
方法
- sum/prod/min/max/argmin/argmax
求矩阵中所有元素的和/积/最小值/最大值/最小值索引/最大值索引 - mean/var/std
求矩阵中所有元素的均值方差/标准差
- sum/prod/min/max/argmin/argmax
转换
- tolist/tostring
转换成链表/字符串
- tolist/tostring
Tips: 这里的很多函数都用来处理多维矩阵(m×n),有如下特性:
- 不加 axis 参数,则该函数是对矩阵所有元素起作用,即将多维矩阵拉伸成一维后进行相应操作,最后获得一个数。
- 加 axis=0,则该函数是对每一列起作用,即按照列对相应元素进行运算,最终获得一个 1×n 的一维向量。
- 加 axis=1,则该函数是对每一行起作用,即按照行对相应元素进行运算,最终获得一个 m×1 的一维向量。
基本操作
构建
- concatenate
把多个矩阵串起来,通过 axis 参数调节横向(1)和纵向(0/默认) - ones/zeros/ones_like/zeros_like
创建全1/0矩阵/创建和矩阵相同维度的全1/0矩阵 - identity
创建单位矩阵 - eye
创建方阵(长宽都相当的矩阵),指定莫个对角线为1,其它为0
- concatenate
提取
- logical_and/logical_not/logical_or
逻辑与/逻辑非/逻辑或 - where
跟if类似 - isnan/isfinite
是否是一个数/无穷 - take/put
将一个矩阵里的元素当索引提取/存放矩阵
- logical_and/logical_not/logical_or
方法
- abs/sign/sqrt/log/log10/exp
绝对值/取符号位/开根号/以2为底的对数/以10为底的对数/指数 - floor/ceil/rint
向下取整/向上取整/四舍五入取整 - sin/cos/tan/arcsin/arccos/arctan
正弦/余弦/正切/反正弦/反余弦/反正切 - sinh/cosh/tanh/arcsinh/arccoh/arctanh
双曲正弦/双曲余弦/反双曲正弦/反双曲余弦/反双曲正切 - dot/outer/inner/cross
点乘/外积/内积/向量积 - median/corrcoef/cov
求中位数/相关系数/协方差
- abs/sign/sqrt/log/log10/exp
线性代数
包含线性代数的所有的函数都包含在 linalg 子库中。
- det/eig/inv/pinv/svd
求矩阵的行列式/特征值和向量/逆/伪逆/奇异值分解
傅里叶变换
关于傅里叶变换的函数包含在 fft 子库中。
随机数生成
关于随机数的生成函数都在 random 子库中。
- seed
设定随机种子 - rand
构建随机矩阵 - random
获取一个随机数
多项式
关于多项处理的函数都在 polynomial 子库中。
测试工具
关于测试工具的函数在 testing 子库中。