就像向量是有序的数字列表一样,矩阵则是有序的数字表。为了高效地操作它们,我们需要一种标准方法来描述它们的尺寸并指代它们的各个组成部分。这需要了解矩阵的维度和元素记号。理解维度:行与列矩阵的尺寸或维度由它包含的行数和列数定义。我们通常将一个有 $m$ 行 $n$ 列的矩阵称为一个 $m \times n$ 矩阵(读作“m 乘 n”)。行数总是排在前面。例如,考虑这个矩阵 $A$:$$ A = \begin{bmatrix} 5 & 12 & 6 \ -3 & 0 & 14 \end{bmatrix} $$矩阵 $A$ 有 2 行 3 列,所以它是一个 $2 \times 3$ 矩阵。记住这个顺序很重要:先行后列。一个 $3 \times 2$ 矩阵看起来会有所不同,它有 3 行 2 列:$$ B = \begin{bmatrix} 1 & 2 \ 3 & 4 \ 5 & 6 \end{bmatrix} $$这里,$B$ 是一个 $3 \times 2$ 矩阵。digraph G { rankdir=LR; node [shape=plaintext, fontname="Arial"]; subgraph cluster_A { label = "矩阵 A (2 x 3)"; bgcolor="#e9ecef"; a [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="5"> <TR><TD BGCOLOR="#a5d8ff">5</TD><TD BGCOLOR="#a5d8ff">12</TD><TD BGCOLOR="#a5d8ff">6</TD></TR> <TR><TD BGCOLOR="#a5d8ff">-3</TD><TD BGCOLOR="#a5d8ff">0</TD><TD BGCOLOR="#a5d8ff">14</TD></TR> </TABLE>>]; a_dim [label="2 行\n3 列", fontcolor="#495057"]; } subgraph cluster_B { label = "矩阵 B (3 x 2)"; bgcolor="#e9ecef"; b [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="5"> <TR><TD BGCOLOR="#96f2d7">1</TD><TD BGCOLOR="#96f2d7">2</TD></TR> <TR><TD BGCOLOR="#96f2d7">3</TD><TD BGCOLOR="#96f2d7">4</TD></TR> <TR><TD BGCOLOR="#96f2d7">5</TD><TD BGCOLOR="#96f2d7">6</TD></TR> </TABLE>>]; b_dim [label="3 行\n2 列", fontcolor="#495057"]; } }矩阵 $A$ 和 $B$ 有不同的维度。$A$ 是 $2 \times 3$,而 $B$ 是 $3 \times 2$。引用矩阵元素我们经常需要引用矩阵中的一个特定数字或元素。我们使用下标来做这件事,下标通常用小写字母表示。如果我们有一个矩阵 $A$,其第 $i$ 行第 $j$ 列的元素表示为 $A_{ij}$ 或 $a_{ij}$。同样,先行索引($i$)再列索引($j$)。我们再次使用之前的矩阵 $A$:$$ A = \begin{bmatrix} 5 & 12 & 6 \ -3 & 0 & 14 \end{bmatrix} $$以下是我们如何引用其元素:第 1 行第 1 列的元素是 $A_{11} = 5$。第 1 行第 3 列的元素是 $A_{13} = 6$。第 2 行第 1 列的元素是 $A_{21} = -3$。第 2 行第 2 列的元素是 $A_{22} = 0$。digraph G { node [shape=plaintext, fontname="Arial"]; matrix_table [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="5" CELLPADDING="10"> <TR><TD>A = </TD><TD> <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="5"> <TR><TD PORT="r1c1">A<SUB>11</SUB></TD><TD PORT="r1c2">A<SUB>12</SUB></TD><TD PORT="r1c3" BGCOLOR="#ffec99">A<SUB>13</SUB></TD></TR> <TR><TD PORT="r2c1" BGCOLOR="#ffec99">A<SUB>21</SUB></TD><TD PORT="r2c2">A<SUB>22</SUB></TD><TD PORT="r2c3">A<SUB>23</SUB></TD></TR> </TABLE> </TD></TR> </TABLE>>]; example_values [label=< <TABLE BORDER="0" CELLSPACING="2"> <TR><TD ALIGN="LEFT">引用示例:</TD></TR> <TR><TD ALIGN="LEFT"><FONT COLOR="#f76707">A<SUB>13</SUB></FONT> 指代第 1 行第 3 列的元素。</TD></TR> <TR><TD ALIGN="LEFT"><FONT COLOR="#f76707">A<SUB>21</SUB></FONT> 指代第 2 行第 1 列的元素。</TD></TR> </TABLE> >]; matrix_table -> example_values [style=invis]; // 布局提示 }记号 $A_{ij}$ 指定了第 $i$ 行第 $j$ 列的元素。索引:数学与编程在数学和教科书中,索引通常从 1 开始(1-基索引)。所以,左上角的元素是 $A_{11}$。然而,在许多编程语言中,包括 Python 及其库 NumPy,索引从 0 开始(0-基索引)。数学记号: $A_{ij}$,其中 $i$ 从 1 开始,$j$ 从 1 开始。NumPy/Python 记号: A[i, j],其中 i 从 0 开始,$j$ 从 0 开始。因此,数学元素 $A_{11}$ 在 NumPy 中对应 A[0, 0]。同样,$A_{23}$ 对应 A[1, 2]。我们在讨论内容时将主要使用数学记号($A_{ij}$),但当我们开始在动手实践部分用 Python 和 NumPy 实现这些想法时,记住 0-基索引很重要。记号概述矩阵通常用大写字母表示(例如 $A, B, X$)。矩阵中的元素用对应的小写字母加下标表示行和列(例如 $a_{ij}, b_{ij}, x_{ij}$),或者用大写字母加下标($A_{ij}$)表示。维度写成行 $\times$ 列(例如 $m \times n$)。了解这些约定能让我们精确地交流关于矩阵及其组成部分的信息,这在我们开始对它们进行操作时非常基本。当我们使用 NumPy 时,我们会看到它的数组结构如何直接对应这些数学内容,并使用 0-基索引进行实际访问。