首页 > 解决方案 > 如何使用numpy将矩阵与另一个矩阵中的每一行相乘

问题描述

import numpy
A = numpy.array([
  [0,1,1],
  [2,2,0],
  [3,0,3]
])

B = numpy.array([
  [1,1,1],
  [2,2,2],
  [3,2,9],
  [4,4,4],
  [5,9,5]
])

A的尺寸:N * N(3*3)

B 尺寸:K * N(5*3)

预期结果为:C = [ A * B[0], A * B[1], A * B[2], A * B[3], A * B[4]] (C 的维度也是 5* 3)

我是 numpy 的新手,不知道如何在不使用 for 循环的情况下执行此操作。

谢谢!

标签: pythonnumpy

解决方案


根据您提供的数学,我认为您正在评估 A 乘以 B 转置。如果您希望结果矩阵的大小为 5*3,则可以转置它(相当于numpy.matmul(B.transpose(),A)).

import numpy
A = numpy.array([
  [0,1,1],
  [2,2,0],
  [3,0,3]
])

B = numpy.array([
  [1,1,1],
  [2,2,2],
  [3,2,9],
  [4,4,4],
  [5,9,5]
])

print(numpy.matmul(A,B.transpose()))
output :array([[ 2,  4, 11,  8, 14],
               [ 4,  8, 10, 16, 28],
               [ 6, 12, 36, 24, 30]])

for i in range(5):
    print (numpy.matmul(A,B[i]))
Output:
[2 4 6]
[ 4  8 12]
[11 10 36]
[ 8 16 24]
[14 28 30]

推荐阅读