Python 中 NumPy 矩阵乘法2025年3月17日 | 阅读 3 分钟 矩阵乘法是一种运算,它通过将两个矩阵作为输入,并将第一个矩阵的行乘以第二个矩阵的列来产生单个矩阵。 请注意,我们必须确保第一个矩阵的行数等于第二个矩阵的列数。  在 Python 中,使用 NumPy 进行矩阵乘法的过程称为向量化。 向量化的主要目的是删除或减少我们显式使用的for 循环。 通过减少程序中的“for”循环可以实现更快的计算。 内置包 NumPy 用于操作和数组处理。 有三种方法可以通过它们执行 numpy 矩阵乘法。 - 首先是使用 multiply() 函数,它执行矩阵的逐元素乘法。
- 其次是使用 matmul() 函数,它执行两个数组的矩阵乘积。
- 最后是使用 dot() 函数,它执行两个数组的点积。
示例 1:逐元素矩阵乘法在上面的代码中 - 我们使用别名 np 导入了 numpy。
- 我们使用 numpy.array() 函数创建了 array1 和 array2,维度为 3。
- 我们创建了一个变量 result,并为其分配了 np.multiply() 函数的返回值。
- 我们在 np.multiply() 中传递了数组 array1 和 array2。
- 最后,我们尝试打印 result 的值。
在输出中,显示了一个三维矩阵,其元素是 array1 和 array2 元素的逐元素乘法的结果。 输出 array([[[ 9, 16, 21],
[24, 25, 24],
[21, 16, 9]]])
示例 2:矩阵乘积输出 array([[[ 30, 24, 18],
[ 84, 69, 54],
[138, 114, 90]]])
在上面的代码中 - 我们使用别名 np 导入了 numpy。
- 我们使用 numpy.array() 函数创建了 array1 和 array2,维度为 3。
- 我们创建了一个变量 result,并为其分配了 np.matmul() 函数的返回值。
- 我们在 np.matmul() 中传递了数组 array1 和 array2。
- 最后,我们尝试打印 result 的值。
在输出中,显示了一个三维矩阵,其元素是 array1 和 array2 元素的乘积。 示例 3:点积以下是 numpy.dot 的规范 - 当 a 和 b 都是 1-D(一维)数组时 -> 两个向量的内积(不进行复共轭)
- 当 a 和 b 都是 2-D(二维)数组时 -> 矩阵乘法
- 当 a 或 b 是 0-D(也称为标量)时 -> 使用 numpy.multiply(a, b) 或 a * b 进行乘法。
- 当 a 是一个 N-D 数组,b 是一个 1-D 数组时 -> 在 a 的最后一个轴和 b 上求和。
- 当 a 是一个 N-D 数组,b 是一个 M-D 数组,且 M>=2 时 -> 在 a 的最后一个轴和 b 的倒数第二个轴上求和
此外,dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])
在上面的代码中 - 我们使用别名 np 导入了 numpy。
- 我们使用 numpy.array() 函数创建了 array1 和 array2,维度为 3。
- 我们创建了一个变量 result,并为其分配了 np.dot() 函数的返回值。
- 我们在 np.dot() 中传递了数组 array1 和 array2。
- 最后,我们尝试打印 result 的值。
在输出中,显示了一个三维矩阵,其元素是 array1 和 array2 元素的点积。 输出 array([[[[ 30, 24, 18]],
[[ 84, 69, 54]],
[[138, 114, 90]]]])
|