NumPy矩阵乘法完全指南:Python中高效处理矩阵运算的详细教程

NumPy矩阵乘法可以通过以下三种方法进行。

  1. multiply():逐元素矩阵相乘
  2. matmul():两个数组的矩阵乘积
  3. dot():两个数组的点积

1. NumPy 矩阵逐元素相乘

如果你想进行逐元素矩阵乘法,你可以使用multiply()函数。

import numpy as np

arr1 = np.array([[1, 2],
                 [3, 4]])
arr2 = np.array([[5, 6],
                 [7, 8]])

arr_result = np.multiply(arr1, arr2)

print(arr_result)

输出结果:

[[ 5 12]
 [21 32]]

下面的图片显示了执行乘法运算以得到结果矩阵。

NumPy矩阵乘法

2. 两个NumPy数组的矩阵乘积

如果你想要两个数组的矩阵乘积,请使用matmul()函数。

import numpy as np

arr1 = np.array([[1, 2],
                 [3, 4]])
arr2 = np.array([[5, 6],
                 [7, 8]])

arr_result = np.matmul(arr1, arr2)

print(f'arr1和arr2的矩阵乘积是:\n{arr_result}')

arr_result = np.matmul(arr2, arr1)

print(f'arr2和arr1的矩阵乘积是:\n{arr_result}')

输出:

arr1和arr2的矩阵乘积是:
[[19 22]
 [43 50]]
arr2和arr1的矩阵乘积是:
[[23 34]
 [31 46]]

下图解释了结果数组中每个索引的矩阵乘法操作。为简单起见,取第一个数组的行和第二个数组的列,然后将对应的元素相乘并相加,得出矩阵乘积的值。

NumPy矩阵乘积

两个数组的矩阵乘积取决于参数的位置。因此,matmul(A, B)可能与matmul(B, A)不同。

3. 两个NumPy数组的点积

numpy的dot()函数返回两个数组的点乘结果。对于一维和二维数组,该结果与matmul()函数相同。

import numpy as np

arr1 = np.array([[1, 2],
                 [3, 4]])
arr2 = np.array([[5, 6],
                 [7, 8]])

arr_result = np.dot(arr1, arr2)

print(f'arr1和arr2的点积是:\n{arr_result}')

arr_result = np.dot(arr2, arr1)

print(f'arr2和arr1的点积是:\n{arr_result}')

arr_result = np.dot([1, 2], [5, 6])
print(f'两个一维数组的点积是:\n{arr_result}')

输出:

arr1和arr2的点积是:
[[19 22]
 [43 50]]
arr2和arr1的点积是:
[[23 34]
 [31 46]]
两个一维数组的点积是:
17

推荐阅读:

  • numpy.square() – 计算数组元素的平方
  • NumPy sqrt() – 矩阵元素的平方根
  • Python NumPy教程

参考文献

  • numpy matmul() – 矩阵乘法函数
  • numpy multiply() – 逐元素乘法函数
bannerAds