实现矩阵的转置:从数学原理到 NumPy 实战

目录

一、前言

二、什么是矩阵转置

三、转置的定义

四、转置示例

五、为什么需要转置

六、矩阵转置流程

七、手写实现矩阵转置

八、使用列表推导式实现

九、NumPy实现转置

十、transpose()函数

十一、一维数组转置陷阱

十二、矩阵乘法中的转置

十三、协方差矩阵中的转置

十四、PCA中的转置

十五、神经网络中的转置

十六、三维数组转置

[十七、转置与 reshape 的区别](#十七、转置与 reshape 的区别)

十八、转置的数学性质

十九、机器学习中的典型应用

二十、总结


一、前言

在机器学习和深度学习中,有一个操作几乎无处不在:

复制代码
矩阵转置(Transpose)

例如:

复制代码
线性回归

逻辑回归

最小二乘法

PCA主成分分析

协方差矩阵

神经网络反向传播

都会频繁出现:

复制代码
Aᵀ

很多初学者看到这个符号时会疑惑:

复制代码
矩阵转置到底是什么?

为什么要转置?

转置后矩阵发生了什么变化?

实际上:

矩阵转置本质上是交换矩阵的行和列。

理解转置之后,很多机器学习公式都会变得简单很多。


二、什么是矩阵转置

假设有一个矩阵:

python 复制代码
A =

[
 [1 2 3]
 [4 5 6]
]

矩阵形状:

复制代码
(2,3)

表示:

复制代码
2行

3列

其转置记作:

复制代码
Aᵀ

结果:

python 复制代码
[
 [1 4]
 [2 5]
 [3 6]
]

此时形状变为:

复制代码
(3,2)

即:

复制代码
原来的行

变成列

原来的列

变成行

三、转置的定义

数学定义:

如果矩阵:

复制代码
A(i,j)

表示:

复制代码
第i行

第j列

那么:

复制代码
Aᵀ(j,i)

表示:

复制代码
第j行

第i列

即:

复制代码
交换坐标

规则:

复制代码
(i,j)

↓

(j,i)

四、转置示例

矩阵:

复制代码
[
 [1 2]
 [3 4]
]

转置:

复制代码
[
 [1 3]
 [2 4]
]

矩阵:

复制代码
[
 [1 2 3]
]

转置:

复制代码
[
 [1]
 [2]
 [3]
]

可以看到:

复制代码
行向量

变成列向量

五、为什么需要转置

假设:

学生成绩表:

复制代码
[
 [90 85 88]
 [95 92 96]
]

表示:

复制代码
2个学生

3门课程

如果转置:

复制代码
[
 [90 95]
 [85 92]
 [88 96]
]

则表示:

复制代码
3门课程

2个学生

因此:

复制代码
转置本质是切换观察数据的角度

六、矩阵转置流程


七、手写实现矩阵转置

原矩阵:

python 复制代码
A = [
    [1,2,3],
    [4,5,6]
]

转置实现:

python 复制代码
rows = len(A)
cols = len(A[0])

result = []

for j in range(cols):

    row = []

    for i in range(rows):
        row.append(A[i][j])

    result.append(row)

print(result)

输出:

复制代码
[
 [1,4],
 [2,5],
 [3,6]
]

八、使用列表推导式实现

代码更加简洁:

python 复制代码
A = [
    [1,2,3],
    [4,5,6]
]

result = [
    [row[i] for row in A]
    for i in range(len(A[0]))
]

print(result)

输出:

复制代码
[
 [1,4],
 [2,5],
 [3,6]
]

九、NumPy实现转置

NumPy提供:

复制代码
.T

属性。

示例:

python 复制代码
import numpy as np

A = np.array([
    [1,2,3],
    [4,5,6]
])

print(A.T)

输出:

复制代码
[
 [1 4]
 [2 5]
 [3 6]
]

查看形状:

复制代码
print(A.shape)

输出:

复制代码
(2,3)

转置后:

复制代码
print(A.T.shape)

输出:

复制代码
(3,2)

十、transpose()函数

除了:

复制代码
A.T

还可以:

复制代码
np.transpose(A)

示例:

python 复制代码
import numpy as np

A = np.array([
    [1,2],
    [3,4]
])

print(np.transpose(A))

结果:

复制代码
[
 [1 3]
 [2 4]
]

十一、一维数组转置陷阱

很多人第一次会写:

python 复制代码
arr = np.array([
    1,
    2,
    3
])

print(arr.T)

结果:

复制代码
[1 2 3]

发现:

复制代码
没有变化

原因:

复制代码
一维数组没有行列概念

形状:

复制代码
(3,)

转置后仍然:

复制代码
(3,)

正确写法:

python 复制代码
arr = np.array([
    [1],
    [2],
    [3]
])

形状:

复制代码
(3,1)

转置:

复制代码
(1,3)

十二、矩阵乘法中的转置

假设:

复制代码
A.shape

(2,3)

B.shape

(2,3)

无法相乘:

复制代码
3 ≠ 2

报错。


解决方法:

复制代码
A @ B.T

此时:

复制代码
(2,3)

×

(3,2)

合法。

结果:

复制代码
(2,2)

十三、协方差矩阵中的转置

机器学习中经常看到:

复制代码
XᵀX

例如:

最小二乘法:

复制代码
β

=

(XᵀX)^(-1)

Xᵀy

这里:

复制代码
Xᵀ

就是特征矩阵转置

十四、PCA中的转置

主成分分析:

协方差矩阵:

复制代码
Cov

=

XᵀX

/

(n-1)

因此:

复制代码
转置

是PCA的重要基础

十五、神经网络中的转置

假设:

输入:

复制代码
X.shape

(100,784)

权重:

复制代码
W.shape

(128,784)

需要计算:

复制代码
X @ W.T

此时:

复制代码
(100,784)

×

(784,128)

得到:

复制代码
(100,128)

神经网络大量使用这种技巧。


十六、三维数组转置

二维矩阵:

复制代码
A.T

即可。


三维数组:

复制代码
arr.shape

(2,3,4)

使用:

复制代码
arr.transpose(
    1,
    0,
    2
)

结果:

复制代码
(3,2,4)

表示:

复制代码
交换第0轴

和第1轴

十七、转置与 reshape 的区别

很多人容易混淆:

复制代码
reshape()

和:

复制代码
transpose()

reshape:

复制代码
改变数据排列方式

例如:

复制代码
(2,6)

↓

(3,4)

transpose:

复制代码
交换维度顺序

例如:

复制代码
(2,3)

↓

(3,2)

十八、转置的数学性质

性质1:

复制代码
(Aᵀ)ᵀ

=

A

转置两次回到原矩阵。


性质2:

复制代码
(A+B)ᵀ

=

Aᵀ+Bᵀ

性质3:

复制代码
(AB)ᵀ

=

BᵀAᵀ

注意:

复制代码
顺序反过来

这是考试和面试高频题。


十九、机器学习中的典型应用

转置常见于:

复制代码
最小二乘法

线性回归

逻辑回归

协方差矩阵

PCA

SVD

神经网络反向传播

Transformer注意力机制

几乎所有线性代数算法都会用到。


二十、总结

矩阵转置是线性代数中最基础也是最重要的操作之一。

核心思想:

复制代码
行变列

列变行

数学规则:

复制代码
(i,j)

↓

(j,i)

NumPy实现:

复制代码
A.T

或者:

复制代码
np.transpose(A)

应用场景:

复制代码
矩阵乘法

最小二乘法

PCA

协方差矩阵

神经网络

Transformer

可以这样理解:

复制代码
矩阵转置

并没有改变数据本身

它只是改变了观察数据的方式

而这种"换个角度看数据"的能力,正是现代机器学习和数据科学中许多算法得以成立的重要基础。

相关推荐
不知名的老吴2 小时前
Minitab 22中文版安装教程及全流程下载步骤指南
数据分析
吃好睡好便好3 小时前
矩阵旋转的计算
学习·线性代数·算法·矩阵
数据与后端架构提升之路3 小时前
显存都去哪了:从 FP32 Master Weight 讲透大模型训练的显存账本
机器学习·显存
zhangfeng11333 小时前
本账号 自媒体 csdn 账号诊断和改进建议,记录一下
人工智能·机器学习·媒体
code_pgf3 小时前
DPO和PPO详解及区别
人工智能·机器学习
埃菲尔铁塔_CV算法3 小时前
基于扩张卷积与双分支参数调控的低光照图像增强算法完整研究与工程解析
人工智能·神经网络·算法·机器学习·计算机视觉
老鱼说AI4 小时前
统计学习方法第七章:支持向量机精讲(超硬核长文深入预警!)
人工智能·深度学习·神经网络·算法·机器学习·支持向量机·学习方法
列星随旋4 小时前
矩阵快速幂
java·算法·矩阵
zhangfeng11334 小时前
DeepSeek V4 适配华为昇腾950 难度及开源情况
人工智能·pytorch·python·机器学习·华为·开源