2.5.6 矩阵的每一行的元素都减去该行的平均值(注意,平均值计算时指定axis,以及减法操作时形状改变)
import numpy as np A = np.random.randint(0, 10, size = (4, 5)) display(A) # 计算每一行的平均值: B = A.mean(axis = 1) display(B) # 需要注意,我们计算的平均值是一行四列 # 但是我们要让每一行的元素都减去该平均值 # 这就需要我们让其形状改变为四列一行 B = B.reshape(-1, 1) # 然后利用广播机制,即可进行计算 display(A - B)
2.5.7 打印出以下函数(要求使用np.zeros创建8*8的矩阵):
[[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]]
import numpy as np arr = np.zeros(shape = (8, 8), dtype = np.int16) # 将奇数行进行修改 arr[::2, 1::2] = 1 # 将偶数行进行修改 arr[1::2, ::2] = 1 display(arr)
2.5.8 正则化一个5行5列的随机矩阵(数据统一变成0~1之间的数字,相当于进行缩小)
正则的概念:矩阵A中的每一列减去这一列最小值,除以每一列的最大值减去每一列的最小值(提示:
轴axis给合适的参数!!!)
import numpy as np A = np.random.randint(1, 10, size = (5, 5)) display(A) # axis = 1 代表行 display(A.min(axis = 1)) # axis = 0 代表列 display(A.min(axis = 0)) # 根据公式计算 B = (A - A.min(axis = 0)) / (A.max(axis = 0) - A.min(axis = 0)) display(B)
2.5.9 如何根据两个或多个条件过滤numpy数组。加载鸢尾花数据,根据第一列小于5.0并且第三列大于1.5作为条件,进行数据筛选。(提示,需要使用逻辑与运算:&)
我们的数据:
链接:https://pan.baidu.com/s/1VaPHJa6YttfnedO0ewDRtQ
提取码:5u92
我们在下载好数据之后,把它移入到我们如下文件夹中:(直接下载到桌面后,找到该文件夹的位置,然后拖进去即可)
首先我们来介绍一下 .csv
文件,它其实就是一个文本文件,我们打开它(默认打开路径为Excel)
我们也可以选择打开方式为记事本方式:
通过观察不难看出,数据之间通过,
相隔
接下来介绍一个新方法:loadtxt()
,其作用为加载数据,比如:np.loadtxt('./iris.csv', delimiter = ',')
,其作用为打开路径'./iris.csv'
的文件,这些数据直接通过,
进行分隔。
import numpy as np # 加载了文本文件,储存数据都是结构化数据 iris = np.loadtxt('./iris.csv', delimiter = ',') display(iris)
可以看出,这些数据是以二维数组的形式展开的,每一维都有四个数据,分别代表:花萼长度,花萼宽度,花瓣长度,花瓣宽度
import numpy as np # 加载了文本文件,储存数据都是结构化数据 # 花萼长度、花萼宽度、花瓣长度、花瓣宽度 iris = np.loadtxt('./iris.csv', delimiter = ',') # 第一列小于5.0 cnt1 = iris[:, 0] < 5 # 第三列大于1.5 cnt2 = iris[:, 2] > 1.5 # 逻辑与运算 cnt = cnt1 & cnt2 display(iris[cnt])
2.5.10 计算鸢尾花数据每一行的softmax得分(exp表示自然底数e的幂运算)
import numpy as np iris = np.loadtxt('./iris.csv', delimiter = ',') def softmax(x): exp = np.exp(x) # 每一行求和,并且进行形状改变(变成二维,可进行广播) # axis = 1 表示计算每一行的和 res = exp / exp.sum(axis = 1).reshape(-1, 1) return res.round(3) # 保留3位小数 res = softmax(iris) display(res)