矩阵乘法是通过将两个矩阵作为输入并将第一矩阵的行与第二矩阵的列相乘来生成单个矩阵的操作。注意, 我们必须确保第一个矩阵中的行数应等于第二个矩阵中的列数。
在Python中, 使用NumPy进行矩阵乘法的过程称为矢量化。向量化的主要目的是删除或减少我们显式使用的for循环。通过减少程序中的” for”循环, 可以加快计算速度。内置软件包NumPy用于操作和数组处理。
这是我们可以执行numpy矩阵乘法的三种方法。
- 首先是使用multiple()函数, 该函数执行矩阵的逐元素乘法。
- 其次是使用matmul()函数, 该函数执行两个数组的矩阵乘积。
- 最后是dot()函数的使用, 该函数执行两个数组的点积。
示例1:逐元素矩阵乘法
import numpy as np
array1=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], ndmin=3)
array2=np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]], ndmin=3)
result=np.multiply(array1, array2)
result
在上面的代码中
- 我们导入了别名为np的numpy。
- 我们使用维3的numpy.array()函数创建了array1和array2。
- 我们创建了一个变量结果, 并分配了np.multiply()函数的返回值。
- 我们已经在np.multiply()中传递了数组array1和array2。
- 最后, 我们尝试打印结果的值。
在输出中, 显示了一个三维矩阵, 其元素是array1和array2元素逐元素相乘的结果。
输出
array([[[ 9, 16, 21], [24, 25, 24], [21, 16, 9]]])
示例2:矩阵乘积
import numpy as np
array1=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], ndmin=3)
array2=np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]], ndmin=3)
result=np.matmul(array1, array2)
result
输出
array([[[ 30, 24, 18], [ 84, 69, 54], [138, 114, 90]]])
在上面的代码中
- 我们导入了别名为np的numpy。
- 我们使用维3的numpy.array()函数创建了array1和array2。
- 我们创建了一个变量结果, 并分配了np.matmul()函数的返回值。
- 我们已经在np.matmul()中传递了数组array1和array2。
- 最后, 我们尝试打印结果的值。
在输出中, 显示了一个三维矩阵, 其元素是array1和array2元素的乘积。
示例3:点积
这些是numpy.dot的以下规范:
- 当a和b均为一维(一维)数组时->两个向量的内积(无复共轭)
- 当a和b均为二维(二维)数组时->矩阵乘法
- 当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的倒数第二个轴上的和积:
另外, 点(a, b)[i, j, k, m] = sum(a [i, j , :] * b [k, :, m])
import numpy as np
array1=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], ndmin=3)
array2=np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]], ndmin=3)
result=np.dot(array1, array2)
result
在上面的代码中
- 我们导入了别名为np的numpy。
- 我们使用维3的numpy.array()函数创建了array1和array2。
- 我们创建了一个变量结果, 并分配了np.dot()函数的返回值。
- 我们已经在np.dot()中传递了数组array1和array2。
- 最后, 我们尝试打印结果的值。
在输出中, 显示了一个三维矩阵, 其元素是array1和array2元素的点积。
输出
array([[[[ 30, 24, 18]], [[ 84, 69, 54]], [[138, 114, 90]]]])
评论前必须登录!
注册