Skip to content

np的matul

约 243 字小于 1 分钟

2025-08-18

今天发现自已已经忘记了matul的用法,特此记录。

都是二维数组

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[7, 8], [9, 10], [11, 12]])
print(np.matmul(a, b))

输出:

[[ 58  64]
 [139 154]]

2x3的矩阵和3x2的矩阵相乘,结果是2x2的矩阵。没什么问题。

三维数组和二维数组

a = np.arange(2 * 3 * 4).reshape(2, 3, 4)
print(a.shape)
b = np.arange(4 * 5).reshape(4, 5)
print(b.shape)
c = np.matmul(a, b)
print(c)
print(c.shape)

可以看到,2x3x4的矩阵和4x5的矩阵相乘,结果是2x3x5的矩阵。


[[ 58  64]
 [139 154]]
(2, 3, 4)
(4, 5)
[[[  70   76   82   88   94]
  [ 190  212  234  256  278]
  [ 310  348  386  424  462]]

 [[ 430  484  538  592  646]
  [ 550  620  690  760  830]
  [ 670  756  842  928 1014]]]
(2, 3, 5)

四维数组和三维数组

想象 a 是一个 2x3x4x5 的矩阵,b 是一个 1x5x6 的矩阵,那么 a 和 b 最终的结果是一个 2x3x4x6 的矩阵。利用了广播机制。