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 的矩阵。利用了广播机制。