五、Numpy对数组按索引查询
三种索引方法:
- 基础索引
- 神奇索引
- 布尔索引
5.1 基础索引
对于一维数组,和list一样,这里略。
对于二维数组,我们用行坐标和列坐标进行定位:
X[行,列] 其中行列可以是数字坐标,也可以是类似切片类型的数据。列可以不写,此时只对行操作。
与列相关:
我们可以取切片进行多个数据的修改:
5.2 神奇索引
我们前面用数字当索引,其实也可以用数组。
数字索引返回单个数据,数字切片索引返回从哪到哪的数据。而神奇索引返回数组对应下几个的值。
实例:获取数组中最大的前N个数字
对于二维数组,原理相同:
5.3 布尔索引
根据True或False返回对应的数据。
对于二维:
还可以使用一些条件组合:
六、Numpy中的数学统计函数
1、Numpy有哪些数学函数:
2、怎样实现按不同的axis计算
以上函数,都有一个参数叫做axis用于指定计算轴为行还是列,如果不指定,那么会计算所有元素的结果
3、实例:机器学习将数据进行标准化
A = (A - mean(A, axis=0)) / std(A, axis=0)
6.1 Numpy中的数学统计函数
6.2 Numpy的axis参数用途
6.3 机器学习将数据标准化
七、Numpy计算数组中满足条件的个数
需求:有一个非常大的数组比如1亿个数字,求出里面数字小于5000的数字数目
1. 使用numpy的random模块生成1亿个数字
2. 使用Python原生语法实现
3. 使用Numpy向量化操作实现
4. 时间对比
八、给数组增加维度的三种方法
背景:
很多数据计算都是二维或三维的,对于一维的数据输入为了形状匹配,经常需升维变成二维
需要:
在不改变数据的情况下,添加数组维度;(注意观察这个例子,维度变了,但数据不变)
原始数组:一维数组arr=[1,2,3,4],其shape是(4, ),取值分别为arr[0],arr[1],arr[2],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.expand_dims(arr, axis):方法,和np.newaxis实现一样的功能,给arr在axis位置添加维度
- np.reshape(a, newshape):方法,给一个维度设置为1完成升维
方法1:np.newaxis关键字
方法2 :np.expand_dims方法
方法3:np.reshape方法
九、Numpy实现K折交叉验证的数据划分
背景:K折交叉验证
为什么需要这个?
在机器学习中,因为如下原因,使用K折交叉验证能更好评估模型效果:
1. 样本量不充足,划分了训练集和测试集后,训练数据更少;
2. 训练集和测试集的不同划分,可能会导致不同的模型性能结果;
K折验证是什么
K折验证(K-fold validtion)将数据划分为大小相同的K个分区。
对每个分区i,在剩余的K-1个分区上训练模型,然后在分区i上评估模型。
最终分数等于K个分数的平均值,使用平均值来消除训练集和测试集的划分影响;
1. 模拟构造样本集合
2. 使用Numpy实现K次划分
结果如下:
十、Numpy数组合并操作
背景:在给机器学习准备数据的过程中,经常需要进行不同来源的数据合并的操作。
两类场景:
1. 给已有的数据添加多行,比如增添一些样本数据进去;
2. 给已有的数据添加多列,比如增添一些特征进去;
以下操作均可以实现数组合并:
np.concatenate(array_list, axis=0/1):沿着指定axis进行数组的合并
np.vstack或者np.row_stack(array_list):垂直vertically、按行row wise进行数据合并
np.hstack或者np.column_stack(array_list):水平horizontally、按列column wise进行数据合并1. 添加多行
2. 添加多列
十一、数组的乘法
按照两个相乘数组A和B的维度不同,分为以下乘法:
数字与一维/二维数组相乘;
一维数组与一维数组相乘;
二维数组与一维数组相乘;
二维数组与二维数组相乘;
numpy有以下乘法函数:
*符号或者np.multiply:逐元素乘法,对应位置的元素相乘,要求shape相同
@符号或者np.matmul:矩阵乘法,形状要求满足(n,k),(k,m)->(n,m)
np.dot:点积乘法
解释:点积,也叫内积,也叫数量积
两个向量a = [a1, a2,…, an]和b = [b1, b2,…, bn]的点积定义为:
a·b=a1b1+a2b2+……+anbn。
1. 数字与数组相乘
2. 一维数组与一维数组相乘
3 . 二维数组和一维数组相乘
4. 二维数组与二维数组相乘