十五、数据科学导论——数学基础之矩阵第1关什么是矩阵任务描述本关任务使用列表创建一个 20 行 20 列的矩阵。相关知识在线性代数中由 m × n 个数 aij 排成的 m 行 n 列的数表称为 m 行 n 列的矩阵简称 m × n 矩阵。记作在 Python 中矩阵是一个二维的数据集合我们将矩阵表示为列表的列表每个内部列表的大小都一样表示矩阵的一行。如果 A 是一个矩阵那么 A[i][j] 就表示第 i 行第 j 列的元素。按照数学表达的惯例我们通常用大写字母表示矩阵。例如A [[1, 2, 3], # A有2行3列[4, 5, 6]]B [[1, 2], # B有3行2列[3, 4],[5, 6]]我们可以设计一个函数来实现矩阵的创建def make_matrix(num_rows, num_cols, entry_fn):return [[entry_fn(i, j) # 根据i创建一个列表for j in range(num_cols)] for i in range(num_rows)] # 为每一个i创建一个列表有了这个函数就可以生成一个5×5的单位矩阵对角线元素是1其他元素是0def is_diagonal(i, j):return 1 if i j else 0identity_matrix make_matrix(5, 5, is_diagonal)得到的矩阵为[[1, 0, 0, 0, 0],[0, 1, 0, 0, 0],[0, 0, 1, 0, 0],[0, 0, 0, 1, 0],[0, 0, 0, 0, 1]]在数学中矩阵的第一行通常称为“第 1 行”第一列通常称为“第 1 列”。而我们需要将矩阵的形式和 Python 的列表统一起来Python 中的列表从 0 开始索引所以我们将矩阵的第一行称为“第 0 行”将第一列称为“第 0 列”数据立方体聚集与维归约数据立方体聚集最底层的方体对应于基本方体基本方体对应于感兴趣的实体。在数据立方体中存在着不同级别的汇总数据立方体可以看成方体的格每个较高层次的抽象将进一步减少结果数据。数据立方体提供了对预计算汇总数据的快速访问使用与给定任务相关的最小方体在可能的情况下对于汇总数据的查询应当使用数据立方体。维归约通过删除不相干的属性或减少数据量。属性子集选择找出最小属性集使得数据类的概率分布尽可能的接近使用所有属性的原分布减少出现在发现模式上的属性的数目使得模式更易于理解。启发式的探索性的方法逐步向前选择逐步向后删除向前选择和向后删除相结合判定归纳树。数据压缩与数值归约数据压缩数据压缩可分为有损压缩和无损压缩。字符串压缩有广泛的理论基础和精妙的算法通常是无损压缩在解压缩前对字符串的操作非常有限。音频/视频压缩通常是有损压缩压缩精度可以递进选择有时可以在不解压整体数据的情况下重构某个片断。两种有损数据压缩的方法小波变换和主要成分分析。编程要求请仔细阅读右侧代码结合相关知识在 Begin-End 区域内进行代码补充并创建一个 20 行 20 列的单位矩阵要求矩阵的对角线元素是 1 其他元素是 0 。测试说明平台会对你编写的代码进行测试预期输出[[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]]开始你的任务吧祝你成功# ********** Begin ********** #def make_matrix(num_rows, num_cols, entry_fn):return [[entry_fn(i, j) for j in range(num_cols)] for i in range(num_rows)]def is_diagonal(i, j):return 1 if i j else 0matrix make_matrix(20, 20, is_diagonal)# ********** End ********** #print(matrix)第2关线代基础之矩阵运算任务描述本关任务设计一个函数实现矩阵与矩阵之间的乘法运算。相关知识为了完成本关任务你需要掌握矩阵的基本运算。矩阵的加减法两个相同大小的矩阵能进行加减法运算例如矩阵的乘法矩阵乘以一个常量时将矩阵中的每个值都乘以该常量即可。矩阵乘以矩阵(AB)[i,j] A[i,1]*B[1,j]A[i,2]*B[2,j]\...A[i,n]*B[n,j]以下图为例矩阵的转置在线性代数中矩阵的转置记作编程要求请仔细阅读右侧代码结合相关知识在 Begin-End 区域内进行代码补充设计一个函数实现矩阵与矩阵之间的乘法运算。测试说明平台会对你编写的代码进行测试预期输出[[124, 290], [120, 235], [115, 215]]开始你的任务吧祝你成功def matxMultiply(A, B):# ********** Begin ********** ## A: m行n列B:n行p列m len(A)n len(B)p len(B[0])# 初始化结果矩阵 m行p列全部0result [[0 for _ in range(p)] for _ in range(m)]for i in range(m):for j in range(p):total 0for k in range(n):total A[i][k] * B[k][j]result[i][j] totalreturn result# ********** End ********** #a [[2,5,8,0],[1,9,5,8],[3,9,4,8]]b [[3,5],[6,8],[11,30],[1,1]]print(matxMultiply(a,b))有任何问题都可以随时关注私信