课程介绍
课程名称:Python3入门机器学习 经典算法与应用 入行人工智能
课程章节: 3-9; 3-10; 3-11
主讲老师:liuyubobobo
今日主要内容导读:
第一部分:Numpy中的比较和Fancy Indexing
第二部分:numpy.array的比较
第三部分:Numpy中的arg运算
课程详细
1.Numpy中的比较和Fancy Indexing
#准备工作
import numpy as np
x = np.arange(16)
#假如想访问某个数
x[3]
#假如想访问某一段相连的数
x[3:9]
#假如想访问间隔有规律的数
x[3:9:2]
#假如想访问零散没规律的数
[x[3],x[5],x[8]]
#有点麻烦
#使用方便的方法来访问零散没规律的数
ind = [3,5,8]
x[ind]
#访问需要的数按照规定方式排列
ind = np.array([[0, 2],
[1,8]])
x[ind]
#ind为下标噢
#矩阵如何使用下标来用
X = x.reshape(4,-1)
X
#第1行的第3列;第2行的第4列;第3行的第4列
row = np.array([0, 1, 2,])
col = np.array([2, 3, 3,])
#第row行第col列
X[row,col]
#第1行第col列
X[0,col]
#前两行
X[:2,col]
#使用布尔值当成列的索引,具体举例对0,2的索引感兴趣
col1 = [True, False, True, False]
#[1,2)对第1行进行抽取
X[1:2,col1]
2.numpy.array的比较
x=np.array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
#将x中数据全进行单次单次单次判断,返回布尔值
x < 3
x > 3
x >= 3
x <= 3
x == 3
x != 3
#进行判断,逻辑就像是,套一个for对每个元素进行,如下操作
#矩阵也一样
2 * x ==24 - 4 * x
#找出有多少个符合标准的
np.sum(x >= 3)
#与上类似,代表着有多少个非0元素,布尔值的话
np.count_nonzero(x <= 3)
#或门,有1回1
np.any(x == 0)
#与门,全1回1
np.all(x == 0)
#和运算 看看有多少人小于三岁和大于三岁(同时满足)
np.sum((x > 3) & (x < 10))
#|或运算 看看有多少人偶数岁或大于三岁
np.sum((x % 2) | (x > 3))
#~非运算-有多少人年龄不是0岁
np.sum(~(x == 0))
#看看小于五岁有谁,相当于用原函数进行判断,的布尔值作为下标,
#来找出下表对应的元素
x[x < 5]
3.Numpy中的arg运算
3.1arg运算
import numpy as np
#先创建一个,正态分布的大随机数数组
x = np.random.normal(0, 1, size=100000)
#查找最小值
np.min(x)
#那么如何找到最小值的下标呢?
np.argmin(x)
#同理,最大值的索引
np.argmax(x)
3.2排序和使用索引
x = np.arange(16)
#对向量进行乱序处理
np.random.shuffle(x)
#假如是矩阵的话,就会使行作为一个向量进行随机排序
#将数据从小到大,索引进行排列,比如第0个数为3,
#就代表原来数组中第四个索引位置为最小
np.argsort(x)
#得到一个排好序的x
np.sort(x)
#使x排好序
x.sort()
#两种方式都能进行排序
#先创建一个矩阵,看看矩阵的排序是如何
X = np.random.randint(10,size=(4,4))
np.sort(X)
#默认axis=0,对每一行进行一次排序
#标定点,以某一个数字为分割,分割两个数组,前后都不是有序的
np.partition(x, 3)
#返回索引数组
np.argpartition(x, 3)
#矩阵排序下标返回
np.argsort(X, axis=1)
#矩阵标定点
#默认axis=0视每一行为一个整体,进行一次partion,在返回arg下标
np.argpartition(X,3)
课程收获
经过2天的学习,我发现Numpy中很多函数非常适合进行,矩阵或者数列方面的运算,并且比起列表更加高效,并且有很多很方便的函数和方法,想必在后续学习机器学习算法的时候能很方便地对数据进行操作。