Python 中 NumPy 矩阵乘法

2025年3月17日 | 阅读 3 分钟

矩阵乘法是一种运算,它通过将两个矩阵作为输入,并将第一个矩阵的行乘以第二个矩阵的列来产生单个矩阵。 请注意,我们必须确保第一个矩阵的行数等于第二个矩阵的列数。

NumPy Matrix Multiplication in Python

在 Python 中,使用 NumPy 进行矩阵乘法的过程称为向量化。 向量化的主要目的是删除或减少我们显式使用的for 循环。 通过减少程序中的“for”循环可以实现更快的计算。 内置包 NumPy 用于操作和数组处理。

有三种方法可以通过它们执行 numpy 矩阵乘法。

  1. 首先是使用 multiply() 函数,它执行矩阵的逐元素乘法。
  2. 其次是使用 matmul() 函数,它执行两个数组的矩阵乘积。
  3. 最后是使用 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]]]])

下一个主题Numpy.array()