0
点赞
收藏
分享

微信扫一扫

Python numpy 矩阵乘法multiply()、dot()、 matmul()、' * '、'@' 的用法区别

Python numpy 矩阵乘法multiply()、dot()、 matmul()、' * '、'@'辨析

https://blog.csdn.net/u011851421/article/details/83783826

在NumPy中,有几种用于进行矩阵乘法的方法,包括multiply(), dot(), matmul(), ' * ', 以及 '@'。它们之间的区别如下:

  1. multiply():
  • numpy.multiply(a, b, out=None)
  • 返回一个数组,该数组是参数a和b的元素级乘积。
  • 这是一种逐元素相乘的操作,而不是矩阵乘法。

import numpy as np

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

result = np.multiply(a, b)

# Output:
# array([[ 5, 12],
#        [21, 32]])

  1. dot():
  • numpy.dot(a, b, out=None)
  • 对于二维数组,它计算的是两个矩阵的点积,对于多维数组,它计算的是最后一个维度的点积。
  • 对于二维数组,它等价于矩阵乘法。对于一维数组,它是内积。
  • 当处理多维数组时,可以使用np.tensordot()来更清晰地表示。

import numpy as np

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

result = np.dot(a, b)

# Output:
# array([[19, 22],
#        [43, 50]])

  1. matmul():
  • numpy.matmul(a, b, out=None)
  • 对于二维数组,它计算的是两个矩阵的点积,对于多维数组,它计算的是最后两个维度的点积。
  • 对于高维数组,推荐使用np.matmul()以保持代码的清晰度。

import numpy as np

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

result = np.matmul(a, b)

# Output:
# array([[19, 22],
#        [43, 50]])

  1. ' * ' (运算符):
  • 对于NumPy数组,* 运算符执行的是逐元素乘法,而不是矩阵乘法。

import numpy as np

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

result = a * b

# Output:
# array([[ 5, 12],
#        [21, 32]])

  1. '@' (运算符):
  • np.dot()np.matmul()一样,@ 用于矩阵乘法。

import numpy as np

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

result = a @ b

# Output:
# array([[19, 22],
#        [43, 50]])

总结:

  • 对于矩阵乘法,可以使用np.dot(), np.matmul(), ' * ' 或者 '@'。
  • 如果你要进行逐元素的乘法(而不是矩阵乘法),可以使用np.multiply() 或者 ' * ' 运算符。
举报

相关推荐

0 条评论