1.NumPy:
是Python的一个开源的数值计算库。可以用来存储和处理大型矩阵,比python自身的嵌套列表结构要高效,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅里叶变换、基本线性函数,基本统计运算和随机模拟等。
2.Jupyter NoteBook
Web应用程序,用途是数据清理和转换,数值模拟,统计建模,机器学习等
运行外部python文件:
%run *.py
计算statement运行时间:
%time statement 一般用于耗时比较长的代码
%timeit statement 会多次运行statement,得到一个更精准的时间,一般用于耗时较短的
返回当前会话的所有变量和函数名称:
%who_ls
3.Numpy数组:
1.使用np.array()创建
numpy默认ndarray的所有元素类型都是相同的,如果传进来的列表包含不同的类型,则统一为同一类型,优先级str>float>int
ndarray的常见数据类型:int、float、str
2.使用np的routines函数创建
- 创建一个所有元素都为一的多维数组:np.ones(shape,dtype=None,order='C')
shape:形状
dtype=None:元素类型
order:{'C','F'},默认值为C,C(行主序),F(列主序)
- 创建一个所有元素都为0的多维数组:np.zeros(shape,dtype=None,order='C')
dtype默认值为float
- 创建一个所有元素都为指定元素的多维数组:np.full(shape,fill_value,dtype=None,order='C')
shape:形状
fill_value:填充值
dtype=None:元素类型
order:{'C','F'},默认值为C,C(行主序),F(列主序)
- 创建一个对角线为1其他位置为0的二维数组:np.eye(N,M=None,k=0,dtype=None)
N:行数
M:列数,默认为None,表示和行数一样
k=0:向右偏移0个位置
dtype默认值为float
- 创建一个等差数列:np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)
start:开始值
stop:结束值
num=50:等差数列中默认有50个数
endpoint=True:是否包含结束值
retstep=Flase:是否返回等差值
dtype=None:元素类型
- 创建一个数值范围的数组(和python的range类似): np.arange(start,stop,step,dtype=None)
start:开始值
stop:结束值
step:步长
dtype=None:元素类型
- 创建一个随机整数的多维数组:np.random.randint(low,high=None,size=None,dtype='l')
low:最小值
high:最大值
- high=None时,生成的数值在[0,low]区间
size=None,数组形状,默认只输出一个随机值
dtype=None:元素类型
- 创建一个都为1的服从标准正态分布的多维数组:np.random.randn(d0,d1,…,dn)
dn:第n个维度的数值
- 创建一个服从正态分布的多维数组:np.random.normal(loc=0.0,scale=0.0,size=None)
loc=0.0:均值,对应正态分布的多维数组
scale:标准差,对应分布的宽度,scale越大,正态分布的曲线越矮胖,scale越小,曲线越高瘦
size=None:数组形状
- 创建一个元素为 [ 0,1 )的随机数的多维数组:np.random.random(size=None)
size=None:数组形状
- 创建一个元素为 [ 0,1 )的随机数的多维数组:np.random.rand(),与np.random.random(size=None)类似:
dn:第n个维度的数值
4.ndarray属性:
ndim:维度
shape:形状(有几个数字就表示几维)
size:总数据数量
dtype:元素类型
5.索引:
一维与列表完全一致,多维时同理,可通过索引修改数组
6.切片:
一维与列表一致,多维同理。
翻转:
二维数组行操作:
二维数组取单行:
二维数组取连续多行:
取不连续多行:
二维数组列操作:
二维数组取单列:
二维数组取连续多列:
取不连续多列:
7.数组变形reshape
-1表示任意剩余维度的长度:
8.级联:np.concatenate()
参数是列表或元组
级联的数组为度必须相同,
可以通过axis参数改变联的方向,axis=0:第一个维度,axis:第二个维度…..
水平级联:
np.hstack()
垂直级联:
np.vstack()
9.拆分:
垂直拆分:np.vsplit()
按照指定位置拆分
水平拆分:np.hsplit()
水平或垂直拆分:split() (axis=0行,axis=1列)
10.数组拷贝:
copy()创建副本
11.聚合操作:
- 求和:np.sum
- np.max():最大值
- np.min():最小值
- np.mean():平均值
- np.average():平均值
- np.median():中位数
- np.percentile(n,q=50):百分位数,q=50代表中位数
- np.argmax():第一个最大值对应下标
- np.argmin():第一个最小值对应的下标
- np.power(n,3):次方,此处为3次方
- np.std():标准差
- np.var():方差
- np.nansum():排Nan值求和
12.矩阵操作
基本矩阵操作:
算术运算符:加减乘除、整除(//)、次方(**)、余数(%)
矩阵和矩阵之间运算
数与矩阵运算
矩阵乘积:
矩阵与矩阵相乘,np.dot
矩阵逆运算:np.linalg.inv()
矩阵行列式:np.linalg.det()
矩阵秩:np.linalg.maxtrix_rank(n)
广播机制:
为不同维度的矩阵尽量提供运算的可能性
规则一:为缺失的维度补维度
规则二:缺失元素用已有值填充
其他数学操作:
np.abs():绝对值
np.sqrt():平方根
np.square():平方
np.exp():指数e
np.log():自然对数,以e为底的对数
np.sin():正弦
np.cos():余弦
np.tan():正切
np.round():四舍五入 eg:np.round(n,2)小数点2位四舍五入
np.ceil():向上取整
np.floor():向下取整
np.cumsum():累加
13.排序操作:
np.sort():不改变输入排序
ndarray().sort():本地处理,不占用空间,但是改变输入
14.文件操作:
np.save():保存ndarray到一个npy文件
np.savez():将多个ndarray到一个npz文件中
np.savetxt():保存到csv或txt中
np.load():读取文件