Numpy库学习笔记
Numpy的核心array对象以及创建array的方法
一,Array对象的背景:
①Numpy的核心数据结构,就叫做array就是数组,array对象可以是一堆数组,也可以是多维数组;
②python的list也可以实现相同的功能,但是array比list的优点在于性能好,包含的数组元数据信息,大量的便捷函数;
③Numpy成为事实上的Scipy,Pandas,Scikit-Learn,Tensorflow,Paddlepaddle等框架的“通用底层语言”
④Numpy的array和Python的List的一个区别,是他元素必须都是同一种数据类型,比如都是数字int类型,这也是Numpy高性能的一个原因;
二,array本身的属性
①shape:返回一个元组,表示array的维度
②ndim:一个数字,表示array的维度的数目
③size:一个数字,表示array中所有数据元素的数目
④dtype:array中元素的数据类型
三,创建array的方法
①从python的列表List和嵌套列表创建array
②使用预定函数arange,ones/ones_like,zeros/zeros_like,empty/empty_like,full/full_like,eye等函数创建
③生成随机数的np.random模块构建
Numpy常用random随机函数汇总
函数名 | 说明 |
seed([seed]) | 设定随机种子,这样每次生成的随机数会相同 |
rand(d0,d1,d2…,dn) | 返回数据再【0,1】之间,具有均匀分布 |
randn(d0,d1,d2…,dn) | 返回数据具有标准正太分布(均值0,方差1) |
andint(low[,high,size,dtype]) | 生成随机整数,包含low,不包含high |
random([size]) | 生成【0.0,1.0】的随机数 |
choice(a[,size,replace,p]) | A是一维数组,从它里面生成随机结果 |
shuffle(x) | 把一个数组x进行随机排列 |
permutation(x) | 把一个数组x进行随机排列,或者数字的全排列 |
normal([loc,scale,size]) | 按照平均值loc和方差scale生成高斯分布的数字 |
untiform([low,high,size]) | 在【low,high】之间生成均匀分布的数字 |
四,Numpy中的数学统计函数
函数名 | 说明 |
np.sum | 所有元素的和 |
np.prod | 所有元素的乘积 |
np.cumsum | 元素的累积加和 |
np.cumprod | 元素的累积乘积 |
np.min | 最小值 |
np.max | 最大值 |
np.percentile | 0-100百分位数 |
np.quantile | 0-1分位数 |
np.median | 中位数 |
np.average | 加权平均,参数可以指定weights |
np.mean | 平均值 |
np.std | 标准差 |
np.var | 方差 |
以上函数,都有一个参数叫做axis用于指定计算轴为行还是列,如果不指定,那么会计算所有元素的结果
五,Numpy的axis参数的用途
axis=0代表行,axis=1代表列
对于sum/mean/media等会聚合函数:axis=0代表跨行计算,axis=1代表跨列计算
重点:机器学习将数据进行标准化
A=(A-mean(A,axis=0))/std(A,axis=0)
六,Numpy给数组增加一个维度
在不改变数据的情况下,添加数组维度;(注意观察这个例子,维度变了,但数据不变)
原始数组:一维数组arr=[1,2,3,4],其shape是(4,),取值分别为arr[0],arr[1],arr[3]
变形数组:二维数组arr[[1,2,3,4,]],其shape是(1,4),取值分别为a[0,0],a[0,1],a[0,2],a[0,3]
3种方法:① np.newaxis: 关键字,使用索引的语法给数组添加维度
② np.expend_dims(arr,axis):方法,和np.newaxis实现一样的功能,给arr在axis位置添加维度
③ np.reshape(a.mewshape):方法,给一个维度设置为1完成升维