现在我们已经了解了什么是矩阵——一个由行和列组成的矩形数字排列,接下来我们来看一些具有独特结构和性质的特定矩阵类型。认识这些特殊形式是有益的,因为它们在线性代数和机器学习的计算和理论探讨中经常出现。方阵最直接的特殊类型是方阵。顾名思义,方阵是行数和列数相等的矩阵。如果一个矩阵 $A$ 有 $m$ 行和 $n$ 列(一个 $m \times n$ 矩阵),当 $m = n$ 时,它就是方阵。例如,以下是几个方阵:$2 \times 2$ 方阵: $$ B = \begin{bmatrix} 1 & 2 \ 3 & 4 \end{bmatrix} $$$3 \times 3$ 方阵: $$ C = \begin{bmatrix} 9 & 8 & 7 \ 6 & 5 & 4 \ 3 & 2 & 1 \end{bmatrix} $$方阵很重要,因为许多重要的矩阵运算和原理,例如矩阵求逆和行列式(我们稍后会提及),主要都是针对它们定义的。在NumPy中,方阵就是一个2D数组,其中第一维度(行数)等于第二维度(列数)。你可以使用.shape属性来检查这一点。import numpy as np B = np.array([[1, 2], [3, 4]]) print(f"矩阵 B:\n{B}") print(f"B 的形状: {B.shape}") # 输出: B 的形状: (2, 2) print(f"B 是方阵吗? {B.shape[0] == B.shape[1]}") # 输出: B 是方阵吗? True C = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]]) print(f"\n矩阵 C:\n{C}") print(f"C 的形状: {C.shape}") # 输出: C 的形状: (3, 3) print(f"C 是方阵吗? {C.shape[0] == C.shape[1]}") # 输出: C 是方阵吗? True # 非方阵示例 D = np.array([[1, 2, 3], [4, 5, 6]]) print(f"\n矩阵 D:\n{D}") print(f"D 的形状: {D.shape}") # 输出: D 的形状: (2, 3) print(f"D 是方阵吗? {D.shape[0] == D.shape[1]}") # 输出: D 是方阵吗? False单位矩阵 ($I$)单位矩阵,通常记作 $I$ 或 $I_n$(其中 $n$ 表示大小),是一种特殊的方阵,它在普通乘法中扮演着类似于数字1的角色。单位矩阵的主对角线(从左上角到右下角的对角线)上是1,其他位置都是0。以下是 $2 \times 2$ 和 $3 \times 3$ 单位矩阵:$$ I_2 = \begin{bmatrix} 1 & 0 \ 0 & 1 \end{bmatrix} $$$$ I_3 = \begin{bmatrix} 1 & 0 & 0 \ 0 & 1 & 0 \ 0 & 0 & 1 \end{bmatrix} $$单位矩阵的主要性质是,当你用它乘以任何其他矩阵 $A$(维度兼容)时,结果仍然是 $A$。也就是说,$AI = A$ 且 $IA = A$。这一性质使其在矩阵代数中具有重要地位,尤其是在讨论矩阵逆时。NumPy 提供了便捷的函数来创建单位矩阵:np.identity(n) 或 np.eye(n)。两者都能创建一个 $n \times n$ 的单位矩阵。import numpy as np # 创建一个 3x3 单位矩阵 I_3 = np.identity(3) print(f"3x3 单位矩阵 (使用 np.identity):\n{I_3}") # 使用 np.eye 创建一个 4x4 单位矩阵 I_4 = np.eye(4) print(f"\n4x4 单位矩阵 (使用 np.eye):\n{I_4}")零矩阵 ($O$)零矩阵,常记作 $O$,是一个所有元素都为零的矩阵。与单位矩阵不同,零矩阵不必是方阵。它可以是任何维度($m \times n$)的。以下是一些示例:$2 \times 3$ 零矩阵: $$ O_{2\times3} = \begin{bmatrix} 0 & 0 & 0 \ 0 & 0 & 0 \end{bmatrix} $$$3 \times 3$(方阵)零矩阵: $$ O_{3\times3} = \begin{bmatrix} 0 & 0 & 0 \ 0 & 0 & 0 \ 0 & 0 & 0 \end{bmatrix} $$零矩阵在标准算术中作用类似于数字0。将一个零矩阵加到另一个矩阵 $A$(相同维度)上时,会使 $A$ 保持不变($A + O = A$)。将任何矩阵 $A$ 乘以一个零矩阵(维度兼容)都会得到一个零矩阵($AO = O$,$OA = O$)。在NumPy中,你可以使用 np.zeros() 函数轻松创建零矩阵,将所需形状指定为元组 (rows, columns)。import numpy as np # 创建一个 2x3 零矩阵 O_2x3 = np.zeros((2, 3)) print(f"2x3 零矩阵:\n{O_2x3}") # 创建一个 3x3 零矩阵 O_3x3 = np.zeros((3, 3)) print(f"\n3x3 零矩阵:\n{O_3x3}")了解这些矩阵类型——方阵、单位矩阵和零矩阵——为后续章节中学习更复杂的矩阵性质和运算提供了铺垫。在为机器学习处理线性代数时,你会经常遇到这些主要结构。