Skip to main content
 首页 » 编程设计

python之矩阵乘法的向量化

2025年05月04日12powertoolsteam

我有很多 3*2 矩阵(A1、A2、A3..),每个 3*2 都是平局。在两次抽奖的情况下,我们有一个 3*4(我们水平堆叠 A1、A2 的每次抽奖)。显然,对我来说,将 3*4 矩阵 (A) 绘制为更大的矩阵一次比一遍又一遍地绘制 3*2 更容易。

但我需要对每个绘图(每个 A1、A2...)执行矩阵乘法到矩阵 B。比如 A1*B 和 A2*B ...AN*B

#each draw of the 3*2 matrix 
A1 = np.array([[ 0,  1], 
              [ 4,  5], 
              [ 8,  9]]) 
 
A2 = np.array([[ 2,  3], 
              [ 6,  7], 
              [ 10, 11]]) 
 
# A is [A1,A2] 
# Easier to draw A once for all  (the larger matrix) 
A = np.array([[ 0,  1,  2,  3], 
              [ 4,  5,  6,  7], 
              [ 8,  9, 10, 11]]) 
 
b = np.array([[ 0,  1], 
              [ 4,  5] 
              ]) 
 
desired output 
array([[ 4,  5, 12, 17], 
       [20, 29, 28, 41], 
       [36, 53, 44, 65]]) 

请您参考如下方法:

您可以将矩阵 A 整形为 2 列,使其符合 b,进行矩阵乘法,然后再整形:

np.dot(A.reshape(-1, 2), b).reshape(3, -1) 
 
#array([[ 4,  5, 12, 17], 
#       [20, 29, 28, 41], 
#       [36, 53, 44, 65]])