11-矩阵(matrix)_方阵_对称阵_单位阵_对角阵

矩阵及其运算

a 11 ⋯ a 1 n ⋯ ⋯ ⋯ a m 1 ⋯ a m n \] \\begin{bmatrix} a_{11} \& \\cdots \& a_{1n} \\\\ \\cdots \& \\cdots \& \\cdots \\\\ a_{m1} \& \\cdots \& a_{mn} \\\\ \\end{bmatrix} a11⋯am1⋯⋯⋯a1n⋯amn 矩阵就是二维数组,上面是一个 m 乘 n 的矩阵,它有 m 行,n 列,每行每列上面都有一个 元素,每个元素都有行标 i 和列标 j, 对应的元素就是 a i j a_{ij} aij 矩阵是一种常见的数据结构,它由一堆一维数组(也称为行向量)组成。矩阵是二维数组,由行和列构成。通常用于在数学、计算机科学、统计学等领域进行数据处理和表示。 矩阵可以由一堆行向量组成,这种表示方式称为行向量组成的矩阵;也可以由一堆列向量组成,称为列向量组成的矩阵。矩阵的行数表示矩阵的高度,列数表示矩阵的宽度。行向量组成的矩阵是以横向排列的行向量构成,而列向量组成的矩阵是以纵向排列的列向量构成。 例如,下面是一个由行向量组成的矩阵: [1 2 3] [4 5 6] [7 8 9] 下面是一个由列向量组成的矩阵: [1 4 7] [2 5 8] [3 6 9] 矩阵在线性代数、图像处理、神经网络等领域具有广泛的应用。在计算机中,矩阵也是很多数据处理算法的基础,例如矩阵乘法、矩阵转置等操作。 ### 方阵,对称矩阵,单位矩阵,对角线 #### 方阵 下面介绍几种特殊的矩阵,如果 m 等于 n,那就称为方阵 \[ 1 0 0 0 2 0 0 0 3 \] \\begin{bmatrix} 1 \& 0 \& 0 \\\\ 0 \& 2 \& 0 \\\\ 0 \& 0 \& 3 \\\\ \\end{bmatrix} 100020003 #### 对称矩阵 对称矩阵转置后不会改变原始矩阵的形状和值。 定义是 a i j a_{ij} aij 等于 a j i a_{ji} aji那么就是对称矩阵(沿着主对角线(左上角到右下角划分的线)的元素对称, 这里的对称是主对角线两侧的元素相等),并且肯定是个方阵 \[ 1 1 2 1 2 3 2 3 3 \] \\begin{bmatrix} 1 \& 1 \& 2 \\\\ 1 \& 2 \& 3 \\\\ 2 \& 3 \& 3 \\\\ \\end{bmatrix} 112123233 #### 单位矩阵 主对角线都是 1,其它位置是 0,这称之为单位阵,单位矩阵写为 I,一定是方阵,等同于数字里面的 1 \[ 1 ⋯ 0 0 0 ⋯ 1 ⋯ 0 0 0 ⋯ ⋯ ⋯ 0 0 0 ⋯ ⋯ ⋯ 0 0 0 ⋯ 1 \] \\begin{bmatrix} 1 \& \\cdots \& 0 \& 0 \& 0\\\\ \\cdots \& 1 \& \\cdots \& 0 \& 0\\\\ 0 \& \\cdots \& \\cdots \& \\cdots \& 0\\\\ 0 \& 0 \& \\cdots \& \\cdots \& \\cdots\\\\ 0 \& 0 \& 0 \& \\cdots \& 1\\\\ \\end{bmatrix} 1⋯000⋯1⋯000⋯⋯⋯000⋯⋯⋯000⋯1 单位矩阵对应的方法是numpy模块中的identity和eye方法, `numpy.identity`返回一个单位矩阵,即一个对角线上为1,其他位置为0的方阵。 #### identity方法 参数: * `n`:一个整数,表示输出的单位矩阵的行数和列数。 * `dtype`:一个可选参数,用于指定输出数组的数据类型,默认为`float`类型。 返回值: * `out`:一个大小为`n x n`的NumPy数组,其主对角线为1,其余元素为0。 #### eye方法 `numpy.eye`方法用于创建一个单位矩阵,也称为单位矩阵或恒等矩阵。单位矩阵是一个方阵,它的主对角线上的元素都是1,其余元素都是0。 函数签名: ```python numpy.eye(N, M=None, k=0, dtype=float, order='C') ``` 参数: * `N`:生成矩阵的行数(也是列数,因为是方阵)。 * `M`:可选参数,生成矩阵的列数,默认为`N`,因为是方阵,一般不需要指定。 * `k`:可选参数,对角线的偏移量,默认为0,表示主对角线上的元素为1,其他元素为0;若`k`为正整数,则主对角线在矩阵的上方,若为负整数,则主对角线在矩阵的下方,对角线元素为1。 * `dtype`:可选参数,指定生成矩阵的数据类型,默认为`float`。 * `order`:可选参数,指定数组的内存布局,`'C'`表示C顺序,`'F'`表示Fortran顺序,默认为`'C'`。 返回值: * 返回一个单位矩阵,其形状为`(N, M)`。 示例: ```python import numpy as np # 创建一个3x3的单位矩阵 eye_matrix = np.eye(3) print(eye_matrix) # 输出: # [[1. 0. 0.] # [0. 1. 0.] # [0. 0. 1.]] # 创建一个4x4的单位矩阵,主对角线偏移量为1 eye_matrix_shifted = np.eye(4, k=1) print(eye_matrix_shifted) # 输出: # [[0. 1. 0. 0.] # [0. 0. 1. 0.] # [0. 0. 0. 1.] # [0. 0. 0. 0.]] ``` `numpy.eye`函数非常有用,特别在线性代数和矩阵运算中经常用到。 #### identity和eye方法的区别 `numpy.eye`函数与`numpy.identity`函数都用于创建单位矩阵,但它们有一些区别: 1. 参数不同: * `numpy.eye(N, M=None, k=0, dtype=float)`:`eye`函数可以创建任意大小的单位矩阵,其中`N`表示行数,`M`表示列数,默认情况下`M`等于`N`,`k`表示对角线的偏移量,默认为0,即主对角线。 * `numpy.identity(n, dtype=None)`:`identity`函数创建的是一个方阵(行数等于列数),只需要一个整数`n`作为参数,表示输出单位矩阵的行数和列数。 2. 默认值不同: * `numpy.eye`的默认数据类型为`float`,可以通过`dtype`参数指定其他数据类型。 * `numpy.identity`的默认数据类型也是`float`,可以通过`dtype`参数指定其他数据类型。 示例: ```python import numpy as np # 使用eye创建3x4的单位矩阵,对角线偏移量为1 eye_matrix = np.eye(3, 4, k=1, dtype=int) print(eye_matrix) # 输出: # [[0 1 0 0] # [0 0 1 0] # [0 0 0 1]] # 使用identity创建3x3的单位矩阵,默认数据类型为float identity_matrix = np.identity(3, dtype=int) print(identity_matrix) # 输出: # [[1 0 0] # [0 1 0] # [0 0 1]] ``` 总的来说,`eye`函数比`identity`函数更灵活,可以创建非方阵的单位矩阵,并且可以指定对角线的偏移量,而`identity`函数则专门用于创建方阵的单位矩阵。 #### 对角阵 对角阵,就是主对角线非 0,其它位置是 0 ![在这里插入图片描述](https://file.jishuzhan.net/article/1687068832725733377/92b2eeb89beb4999a4917d8adf571fa7.png) #### dot方法在矩阵中的应用 `numpy.dot`方法用于计算两个数组的矩阵乘法(点积)。在矩阵运算中,矩阵乘法是一种常见的操作,它涉及到两个矩阵的元素相乘和求和的过程。 函数签名: ```python numpy.dot(a, b, out=None) ``` 参数: * `a`:要进行矩阵乘法的数组或矩阵。 * `b`:要进行矩阵乘法的数组或矩阵。 * `out`:可选参数,指定输出结果的数组。如果不指定,结果将会创建一个新的数组。 返回值: * 返回两个数组的矩阵乘法结果。 注意事项: 1. 两个数组的维度必须满足矩阵乘法的条件,即第一个数组的列数要与第二个数组的行数相等。 2. 如果两个数组是一维的,那么`dot`函数将计算它们的点积(内积)。 3. 如果两个数组是二维的,那么`dot`函数将计算它们的矩阵乘法。 示例: ```python import numpy as np # 一维数组的点积(内积) a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) dot_product = np.dot(a, b) print(dot_product) # 输出:32 # 二维数组的矩阵乘法 matrix_a = np.array([[1, 2], [3, 4]]) matrix_b = np.array([[5, 6], [7, 8]]) matrix_product = np.dot(matrix_a, matrix_b) print(matrix_product) # 输出: # [[19 22] # [43 50]] ```

相关推荐
jndingxin1 天前
OpenCV 图形API(5)API参考:数学运算用于执行图像或矩阵加法操作的函数add()
opencv·webpack·矩阵
y5236482 天前
PowerBI 矩阵,列标题自定义排序
线性代数·矩阵·powerbi
梭七y2 天前
【力扣hot100题】(017)矩阵置零
算法·leetcode·矩阵
进击的jerk3 天前
力扣.旋转矩阵Ⅱ
算法·leetcode·矩阵
幻风_huanfeng3 天前
人工智能之数学基础:矩阵的相似变换的本质是什么?
人工智能·深度学习·线性代数·机器学习·矩阵·相似变换
jllws13 天前
数据类设计_图片类设计_矩阵图类型和像素图类型设计的补充
前端·c++·矩阵·数据类设计
Source.Liu3 天前
【学Rust写CAD】18 定点数2D仿射变换矩阵结构体(MatrixFixedPoint结构别名)
矩阵·rust·cad
进击的jerk3 天前
力扣.旋转矩阵
算法·leetcode·矩阵
Yang-Never3 天前
Open GL ES ->模型矩阵、视图矩阵、投影矩阵等变换矩阵数学推导以及方法接口说明
android·矩阵·kotlin·android studio
passxgx3 天前
7.3 主成分分析(PCA)
线性代数