2.4 矩阵乘法第一视角
这一节探讨矩阵乘法的第一视角。
两个2×2矩阵相乘
上一节最后介绍,a和b均是形状为n×1的列向量,aTb结果为标量,相当于标量积a·b。我们可以把式(2.20)中A写成两个行向量a(1)和a(2),把B写成两个列向量b1和b2,即
这样AB矩阵乘积可以写成
也就是说,将位于矩阵乘法左侧的A写成行向量,右侧的B写成列向量。然后,行向量和列向量逐步相乘,得到乘积每个位置的元素。
用符号代替具体数字,可以写成
式(2.27)展示的是矩阵乘法的基本视角,它直接体现出来的是矩阵乘法规则。
再次强调:a(1)是行向量,b1是列向量。
更一般情况
矩阵乘积AB中,左侧矩阵A的形状为m×p,将矩阵A写成一组上下叠放的行向量a(i),即
其中:行向量a(i)列数为p,即有p个元素。
矩阵乘积AB中,右侧矩阵B的形状为p×n列,将矩阵B写成左右排列的列向量,即
其中:列向量bj行数为p,也有p个元素。
A和B相乘,可以展开写成
热图
图2.10所示为热图(heatmap)可视化矩阵乘法。
图2.10 矩阵乘法热图展示
具体如图2.11所示,A中的第i行向量a(i)乘以B中的第j列向量bj,得到标量a(i)bj,对应乘积矩阵C中第i行、第j列元素ci,j,即
这就是矩阵乘法的第一视角。
图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。