NumPy matmul() 函数用于执行两个数组的矩阵乘积。具体来说,
- 如果a和b都是二维数组,则为矩阵乘法。
- 如果a或b是一维数组,则将其提升为矩阵通过在其维度前添加 1 来实现。矩阵乘法后,前面的 1 被删除。
- 如果任一参数是 N 维,N > 2,则将其视为驻留在最后两个索引中的矩阵堆栈并相应地广播。
请注意,此函数不允许与标量相乘。
语法
numpy.matmul(a, b, out=None)
参数
a | 必填。 指定第一个类似数组的参数。不允许使用标量。 |
b | 必需。 指定第二个类似数组的参数。不允许使用标量。 |
out | 可选。 指定结果的输出数组。默认值为"无"。如果提供,它必须具有与输出相同的形状。 |
返回值
返回两个数组的矩阵乘积。
异常
如果 a 的最后一个维度与 b 的倒数第二个维度或标量值的大小不同,则引发 ValueError 异常传入。
示例:具有一维数组的 matmul() 函数
当使用两个一维数组时,该函数返回数组的内积。
import numpy as np
Arr1 = [5, 8]
Arr2 = [10, 20]
#返回 5*10 + 8*20 = 210
print(np.matmul(Arr1, Arr2))
上述代码的输出将是:
210
示例:带矩阵的 matmul() 函数
当使用两个矩阵时,该函数返回矩阵乘法。
import numpy as np
Arr1 = np.array([[1, 2],
[3, 4]])
Arr2 = np.array([[10, 20],
[30, 40]])
Arr3 = np.matmul(Arr1, Arr2)
print(Arr3)
上述代码的输出将是:
[[ 70 100]
[150 220]]
矩阵乘法计算如下:
[[1*10+2*30 1*20+2*40]
[3*10+4*30 3*20+4*40]]
= [[ 70 100]
[150 220]]