矩阵的总结

文章目录

  • 一个矩阵的列数和行数是怎么定义的
  • 矩阵都是二维的吗?
  • [一维(n×1 或 1×n)这种,也叫行向量或列向量是吗?](#一维(n×1 或 1×n)这种,也叫行向量或列向量是吗?)
  • [一维(n×1 或 1×n)这种说法是不是有问题,给出的列向量和行向量对应的还是二维的呀?](#一维(n×1 或 1×n)这种说法是不是有问题,给出的列向量和行向量对应的还是二维的呀?)

一个矩阵的列数和行数是怎么定义的

矩阵的维度定义为:先行数,后列数。

一个 m × n 的矩阵表示:

  • m = 行数(Row):水平方向的数量(横排)
  • n = 列数(Column):垂直方向的数量(竖排)

直观示意

html 复制代码
     列1   列2   列3   列4
    ┌─────┬─────┬─────┬─────┐
行1 │ a₁₁ │ a₁₂ │ a₁₃ │ a₁₄ │
    ├─────┼─────┼─────┼─────┤
行2 │ a₂₁ │ a₂₂ │ a₂₃ │ a₂₄ │  → 这是一个 2×4 矩阵(2行4列)
    ├─────┼─────┼─────┼─────┤
行3 │ a₃₁ │ a₃₂ │ a₃₃ │ a₃₄ │
    └─────┴─────┴─────┴─────┘
记忆技巧
行 = "行走"时左右移动 → 横着数
列 = "列队"时前后站立 → 竖着数
编程中的对应
Python/NumPy:matrix.shape 返回 (行数, 列数),如 (3, 2) 表示3行2列
索引访问:matrix[i][j] 或 matrix[i, j] 中,i 是行索引(第几横排),j 是列索引(第几竖排)

记忆技巧

  • 行 = "行走"时左右移动 → 横着数
  • 列 = "列队"时前后站立 → 竖着数
    编程中的对应
  • Python/NumPy:matrix.shape 返回 (行数, 列数),如 (3, 2) 表示3行2列
  • 索引访问:matrix[i][j] 或 matrix[i, j] 中,i 是行索引(第几横排),j 是列索引(第几竖排)
    技巧:严格意义上的矩阵(即默认是二维矩阵)行数对应内层的一维数组的个数,列数对应任意一个一维数组中的元素个数(因为矩阵要求,每行的元素个数必须相等)。

矩阵都是二维的吗?

严格来说,数学中的矩阵(Matrix)是二维的,但机器学习、深度学习中常将高维数组泛化称为"张量(Tensor)"。

数学定义(严格)

  • 矩阵:必须是二维(m×n),有行和列
  • 向量:一维(n×1 或 1×n),不是矩阵,而是矩阵的特殊形式(退化情况),这里说的有点问题,下方有进一步说明
  • 标量:零维(单个数值)
    实际应用中的高维"矩阵"(实为张量)
    在Python/NumPy/PyTorch中,常把高维数组叫"多维矩阵"或"张量":
    维度 名称 形状示例 实际例子
    0维 标量 () 一个数字:5
    1维 向量 (5,) [1, 2, 3, 4, 5]
    2维 矩阵 (3, 4) 表格数据、灰度图
    3维 张量 (100, 100, 3) RGB彩色图(高×宽×通道)
    4维 张量 (32, 100, 100, 3) 批量RGB图(批量×高×宽×通道)
    5维+ 高阶张量 (2, 3, 4, 5, 6) 视频批次(时间×批量×高×宽×通道)

关键区分

  • **数学考试:**说"矩阵"必须是二维(行×列)
  • 深度学习代码:
    PyTorch/TensorFlow中tensor可以是任意维度
    习惯上2维叫"矩阵",3维+叫"张量",1维叫"向量"

举例:

python 复制代码
# NumPy中
A = np.array([[1,2],[3,4]])      # 2维 → 严格意义上的矩阵 (2×2)
B = np.array([[[1,2],[3,4]]])    # 3维 → 应叫"张量" (1×2×2),非严格矩阵

**总结:**数学定义是二维的,但工程实践中"n维矩阵"通常指n维数组(张量)。

一维(n×1 或 1×n)这种,也叫行向量或列向量是吗?

是的,完全正确。

  • 列向量(Column Vector):形状 n×1,竖着排列,n行1列
  • 行向量(Row Vector):形状 1×n,横着排列,1行n列
    直观对比
html 复制代码
列向量 (3×1)          行向量 (1×3)
    ┌───┐             ┌───────────┐
    │ a │             │ a │ b │ c │
    │ b │             └───────────┘
    │ c │
    └───┘

数学关系

两者互为转置(Transpose):

  • 列向量 v 的转置 vᵀ = 行向量
  • 行向量 u 的转置 uᵀ = 列向量
    编程中的关键区别
    在NumPy中,shape不同的表现
python 复制代码
import numpy as np

# 一维数组(n,)- 严格说既不是行也不是列,是退化形式
a = np.array([1, 2, 3])        # shape: (3,)

# 列向量(n×1)
col = np.array([[1], [2], [3]]) # shape: (3, 1)

# 行向量(1×n)
row = np.array([[1, 2, 3]])     # shape: (1, 3)

易错点:很多初学者混淆 (3,) 与 (3,1) 或 (1,3):

  • (3,):一维数组,无法明确区分行列
  • (3,1):明确的列向量(矩阵运算时默认竖着)
  • (1,3):明确的行向量(矩阵运算时默认横着)
    矩阵乘法中的角色
    矩阵相乘时,形状必须匹配
python 复制代码
(1×3)  ×  (3×1)  =  (1×1)  →  标量(内积/点积)
行向量    列向量      结果

(3×1)  ×  (1×3)  =  (3×3)  →  矩阵(外积)
列向量    行向量      结果

**总结:**n×1 和 1×n 确实分别叫列向量和行向量,但在编程时要注意用 [[...]] 保持二维结构,才能与严格意义上的矩阵运算兼容。

一维(n×1 或 1×n)这种说法是不是有问题,给出的列向量和行向量对应的还是二维的呀?

你说得完全正确,是我表述有误

"一维"和"n×1/1×n"是互相矛盾的说法:

  • 一维 :形状是 (n,) ------ 只有一个轴
  • n×1 或 1×n :形状是 (n,1) 或 (1,n) ------ 有两个轴 (行和列),只是其中一个维度恰好为1
    正确的区分

维度 形状 可视化 说明

1D数组 (n,) [a, b, c] 只有长度,不分行列

列向量 (n,1) 竖条(n行1列) 2D矩阵,但列数为1

行向量 (1,n) 横条(1行n列) 2D矩阵,但行数为1

为什么容易混淆?

数学上:我们说"向量是一维的"(数学对象的自由度),但写成矩阵形式时:

为了矩阵乘法合规,必须给它套上第二个维度(哪怕为1)

所以出现了"一维对象用二维矩阵表示"的悖论
编程上:
总结:

  • 严格说,n×1 和 1×n 是二维的(单列为列向量,单行为行向量)
  • 如果你想表达"一维",应该是指 (n,) 这种不分行列的形式
  • 我之前的括号标注把两者混为一谈了,谢谢指正!
python 复制代码
# 真正的一维(1D)
a = np.array([1, 2, 3])        # shape: (3,)  ← 只有1个轴

# 二维表示(2D,虽然看起来很扁)
col = a.reshape(-1, 1)         # shape: (3,1) ← 2个轴
row = a.reshape(1, -1)         # shape: (1,3) ← 2个轴

总结:

  • 严格说,n×1 和 1×n 是二维的(单列为列向量,单行为行向量)
  • 如果你想表达"一维",应该是指 (n,) 这种不分行列的形式
  • 我之前的括号标注把两者混为一谈了,谢谢指正!
相关推荐
Frostnova丶5 小时前
LeetCode 238 & 2906.构造乘积数组与乘积矩阵
算法·leetcode·矩阵
闲人不梦卿5 小时前
矩阵多项式的定义
线性代数
链巨人5 小时前
海森矩阵(Hessian矩阵)及其应用
线性代数·机器学习·矩阵·概率论
歪歪歪比巴卜5 小时前
2026实测5款新媒体矩阵管理工具,AI全流程合规检测,破解矩阵运营难题!
人工智能·矩阵·媒体
链巨人6 小时前
通俗理解模型梯度、海森矩阵、模型参数,以及它们之间的关系
人工智能·线性代数·矩阵
听风吹等浪起6 小时前
【SwinTransformer 全维度改进方案矩阵】—— 覆盖注意力、多尺度、通道/空间增强,适配CV全场景的工业级优化库
人工智能·深度学习·线性代数·计算机视觉·矩阵
放下华子我只抽RuiKe57 小时前
文本处理与RNN:硬核实战笔记
人工智能·rnn·深度学习·神经网络·线性代数·机器学习·矩阵
Tisfy7 小时前
LeetCode 2906.构造乘积矩阵:前后缀分解
算法·leetcode·前缀和·矩阵·题解·前后缀分解
Q741_1478 小时前
力扣经典模板题 前缀积 力扣 2906. 构造乘积矩阵 每日一题 哈希表 找规律 力扣 13. 罗马数字转整数 C++
算法·leetcode·前缀和·矩阵