![数学要素(全彩图解 + 微课 + 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=1739272531-wwuww8pZnavLt0LripWEQkA2RZDx0Ed3-0-441cdc8c0de25956f6954f75d76e9613)
这一节探讨矩阵乘法的第一视角。
两个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=1739272531-ehUeUkblaKGZp222K0MPRAXbU7IWbBQ2-0-e41c8bda583caea213fd712687ab6928)
这样AB矩阵乘积可以写成
![](https://epubservercos.yuewen.com/76631A/31398337104755406/epubprivate/OEBPS/Images/Figure-P57_1140095.jpg?sign=1739272531-hj12B6yTmhNFzQXXMxRUnsmFVtAtkOd5-0-07edf7d5db0d3b6bbee2960c7f459e40)
也就是说,将位于矩阵乘法左侧的A写成行向量,右侧的B写成列向量。然后,行向量和列向量逐步相乘,得到乘积每个位置的元素。
用符号代替具体数字,可以写成
![](https://epubservercos.yuewen.com/76631A/31398337104755406/epubprivate/OEBPS/Images/Figure-P57_1140094.jpg?sign=1739272531-uU7vRsF030i64ebmuPz5OuycQQ0WKVWE-0-8c4d07355750b7b519ab65925d7ffaa5)
式(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=1739272531-rY4j83aHFoBelxqoQbANoUCga6Sd3GXO-0-07bfc8b24523f5863bd51b5ac6d12909)
其中:行向量a(i)列数为p,即有p个元素。
矩阵乘积AB中,右侧矩阵B的形状为p×n列,将矩阵B写成左右排列的列向量,即
![](https://epubservercos.yuewen.com/76631A/31398337104755406/epubprivate/OEBPS/Images/Figure-P57_1140090.jpg?sign=1739272531-PWRqUatYpwL75uElXXG2oecGn4mxoveo-0-f00c89947ef341a12cfec9d5ff45cdf3)
其中:列向量bj行数为p,也有p个元素。
A和B相乘,可以展开写成
![](https://epubservercos.yuewen.com/76631A/31398337104755406/epubprivate/OEBPS/Images/Figure-P57_1140096.jpg?sign=1739272531-ty8ZeTpsMEyo9fqOfJ0A0SXRpd1AtLFC-0-4d08c2223a2ce51451e0d7f342f6b82e)
热图
图2.10所示为热图(heatmap)可视化矩阵乘法。
![](https://epubservercos.yuewen.com/76631A/31398337104755406/epubprivate/OEBPS/Images/Figure-P58_1140100.jpg?sign=1739272531-WJK33twvT0wEyagqxiuXthJIH1IEbIFA-0-0a123af672ba28e88301015d670f7580)
图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=1739272531-RJn09TXPVkA0EYaF5DpgbiXpQi8bhKXj-0-527dda2d04747f1ce9bc1acca4a4da9e)
这就是矩阵乘法的第一视角。
![](https://epubservercos.yuewen.com/76631A/31398337104755406/epubprivate/OEBPS/Images/Figure-P58_1140101.jpg?sign=1739272531-GqvBDlkXj9zx7VU2pRxYL3nSainhDCqu-0-5654f0e74e11e333c0d5cf4df99e3918)
图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。