![数学要素(全彩图解 + 微课 + Python编程)](https://wfqqreader-1252317822.image.myqcloud.com/cover/748/52842748/b_52842748.jpg)
2.4 矩阵乘法第一视角
![](https://epubservercos.yuewen.com/76631A/31398337104755406/epubprivate/OEBPS/Images/Figure-P56_136253.jpg?sign=1738865264-0RGiwyJRBiWJtaYbuhUT9fU7YBLp0kVX-0-cb2887786af3463e2d5e652a07b5fddb)
这一节探讨矩阵乘法的第一视角。
两个2×2矩阵相乘
上一节最后介绍,a和b均是形状为n×1的列向量,aTb结果为标量,相当于标量积a·b。我们可以把式(2.20)中A写成两个行向量a(1)和a(2),把B写成两个列向量b1和b2,即
![](https://epubservercos.yuewen.com/76631A/31398337104755406/epubprivate/OEBPS/Images/Figure-P56_1140076.jpg?sign=1738865264-1gCTEW2XfT4Mr4gKk0geabV7l12duzQx-0-aff03a8ca1ade719c84c097732ceb8e7)
这样AB矩阵乘积可以写成
![](https://epubservercos.yuewen.com/76631A/31398337104755406/epubprivate/OEBPS/Images/Figure-P57_1140095.jpg?sign=1738865264-q1bwu61O47YRq8Ny3HtV8UxBfWr9Dt9I-0-48464fff983a3f08972551ff3d2871a9)
也就是说,将位于矩阵乘法左侧的A写成行向量,右侧的B写成列向量。然后,行向量和列向量逐步相乘,得到乘积每个位置的元素。
用符号代替具体数字,可以写成
![](https://epubservercos.yuewen.com/76631A/31398337104755406/epubprivate/OEBPS/Images/Figure-P57_1140094.jpg?sign=1738865264-srEWDRujPasFYDQhKWcvTMTb9Bgaj62G-0-1d1b8333e56538545f78e0100083ff83)
式(2.27)展示的是矩阵乘法的基本视角,它直接体现出来的是矩阵乘法规则。
再次强调:a(1)是行向量,b1是列向量。
更一般情况
矩阵乘积AB中,左侧矩阵A的形状为m×p,将矩阵A写成一组上下叠放的行向量a(i),即
![](https://epubservercos.yuewen.com/76631A/31398337104755406/epubprivate/OEBPS/Images/Figure-P57_1140092.jpg?sign=1738865264-o5MhWXiT2OiQcg3KVZupCB9DO8j4M9ws-0-2aafe5b161f6657aeeebcedb1b2938c9)
其中:行向量a(i)列数为p,即有p个元素。
矩阵乘积AB中,右侧矩阵B的形状为p×n列,将矩阵B写成左右排列的列向量,即
![](https://epubservercos.yuewen.com/76631A/31398337104755406/epubprivate/OEBPS/Images/Figure-P57_1140090.jpg?sign=1738865264-UWkyctPDFgCdPRPQp7J9smgLEK0uSOsl-0-4491667f9d341d2b0feea61483d58a1c)
其中:列向量bj行数为p,也有p个元素。
A和B相乘,可以展开写成
![](https://epubservercos.yuewen.com/76631A/31398337104755406/epubprivate/OEBPS/Images/Figure-P57_1140096.jpg?sign=1738865264-U4399XQnrHfI2oIimpM63jWrojB3AyMa-0-9f3c8f8e59cb4770d157d0a73d266d35)
热图
图2.10所示为热图(heatmap)可视化矩阵乘法。
![](https://epubservercos.yuewen.com/76631A/31398337104755406/epubprivate/OEBPS/Images/Figure-P58_1140100.jpg?sign=1738865264-NFYgnMaApM2V9vYJSBtNK0TvUz3VmkJX-0-794776cbc32d1842645aaa89174f1cf1)
图2.10 矩阵乘法热图展示
具体如图2.11所示,A中的第i行向量a(i)乘以B中的第j列向量bj,得到标量a(i)bj,对应乘积矩阵C中第i行、第j列元素ci,j,即
![](https://epubservercos.yuewen.com/76631A/31398337104755406/epubprivate/OEBPS/Images/Figure-P58_1140099.jpg?sign=1738865264-rlqRJ3KKPulhEPDIbYI2zNwbRiMbCI7Q-0-a817782fd0e3cec8b685bd99ec4d35bf)
这就是矩阵乘法的第一视角。
![](https://epubservercos.yuewen.com/76631A/31398337104755406/epubprivate/OEBPS/Images/Figure-P58_1140101.jpg?sign=1738865264-sYKEe3PYqPvz8rpm0zMgZqRYRTqsMMe2-0-903c2c32580abd788654ab8a9ab7dab8)
图2.11 矩阵乘法第一视角
代码文件Bk3_Ch2_10.py中Bk3_Ch2_10_A部分代码用于绘制图2.10。
代码用numpy.random.uniform()函数产生满足连续均匀分布的随机数,并用seaborn.heatmap()绘制热图。热图采用的colormap为'RdBu_r','Rd'是红色的意思,'Bu'是蓝色,'_r'代表“翻转”。
此外,我们还用Streamlit制作了展示矩阵乘法运算规则的App,请大家参考代码文件Streamlit_Bk3_Ch2_10.py。文件中还展示了如何使用try-except。