Python-矩阵外部产品

发布于 2021-01-29 17:19:37

给定两个矩阵

A: m * r
B: n * r

我想以产生另一矩阵C: m * n,每个条目C_ij是由外积计算的矩阵A_iB_j

例如,

A: [[1, 2],
    [3, 4]]

B: [[3, 1],
    [1, 2]]

C: [[[3, 1],  [[1 ,2],
     [6, 2]],  [2 ,4]],
     [9, 3],  [[3, 6],
     [12,4]],  [4, 8]]]

我可以使用for循环来完成它,例如

    for i in range (A.shape(0)):
      for j in range (B.shape(0)):
         C_ij = np.outer(A_i, B_j)

我想知道是否有矢量化的方法可以加快计算速度?

关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。
    temp = numpy.multiply.outer(A, B)
    C = numpy.swapaxes(temp, 1, 2)
    

    NumPy
    ufuncs(例如multiply)具有outer几乎可以完成您想要的方法的方法。以下:

    temp = numpy.multiply.outer(A, B)
    

    产生这样的结果temp[a, b, c, d] == A[a, b] * B[c, d]。你要C[a, b, c, d] == A[a, c] * B[b, d]。该swapaxes呼叫重新排列temp,以把它放在你想要的顺序。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看