Numpy中np.dot与np.matmul的区别详解

 更新时间:2023年02月15日 09:34:14   作者:ACTerminate  
本文主要介绍了Numpy中np.dot与np.matmul的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

作用相同的情况

在若两个array的维度均为两维的情况下,两个函数的结果是相同的,例如:

a = np.array([i for i in range(6)]).reshape([2,3])
b = np.array([i for i in range(6)]).reshape([3,2])
"""
a
[[0 1 2]
 [3 4 5]]
b
[[0 1]
 [2 3]
 [4 5]] 
"""
>>> np.dot(a,b)
array([[10, 13],
       [28, 40]])
>>> np.matmul(a,b)
array([[10, 13],
       [28, 40]])

作用不同的情况

在三维的情况下,假设

a = np.array([i for i in range(12)]).reshape([2,2,3])
b = np.array([i for i in range(12)]).reshape([2,3,2])
"""
a
[[[ 0  1  2]
  [ 3  4  5]]

 [[ 6  7  8]
  [ 9 10 11]]]
b
[[[ 0  1]
  [ 2  3]
  [ 4  5]]

 [[ 6  7]
  [ 8  9]
  [10 11]]]
"""
>>> np.matmul(a,b)
array([[[ 10,  13],
        [ 28,  40]],

       [[172, 193],
        [244, 274]]])
>>> np.matmul(a,b).shape
(2, 2, 2)

这是因为matmul将最后两维作为矩阵的两维,相当于有2个2 ∗ 2 2*22∗2的矩阵,因此通过对应位置矩阵进行矩阵乘法,会得到2个2 ∗ 2 2*22∗2的结果

>>> np.dot(a,b)
array([[[[ 10,  13],
         [ 28,  31]],

        [[ 28,  40],
         [100, 112]]],


       [[[ 46,  67],
         [172, 193]],

        [[ 64,  94],
         [244, 274]]]])
>>> np.dot(a,b).shape
(2, 2, 2, 2)

可以看到其结果与matmul不同并且结果是四维的,这是因为dot将a数组的最后一维作为向量,并将b数组的倒数第二维作为了另一个向量,因此a中可以看成有2 ∗ 2 2*22∗2个向量,b中有2 ∗ 2 2*22∗2个向量,dot会将a的向量与b的向量全部组合在一起,因此会有( 2 ∗ 2 ) ∗ ( 2 ∗ 2 ) (2*2)*(2*2)(2∗2)∗(2∗2)种结果。

到此这篇关于Numpy中np.dot与np.matmul的区别详解的文章就介绍到这了,更多相关Numpy np.dot与np.matmul内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用python将图片改为灰度图或黑白图

    使用python将图片改为灰度图或黑白图

    使用python将图片改为灰度图或黑白图有三种方式,分别是是使用cv2库和PIL库来实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Pytorch转keras的有效方法,以FlowNet为例讲解

    Pytorch转keras的有效方法,以FlowNet为例讲解

    这篇文章主要介绍了Pytorch转keras的有效方法,以FlowNet为例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • python中split(), os.path.split()和os.path.splitext()的用法

    python中split(), os.path.split()和os.path.splitext()的用法

    本文主要介绍了python中split(), os.path.split()和os.path.splitext()的用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • python利用beautifulSoup实现爬虫

    python利用beautifulSoup实现爬虫

    这篇文章主要介绍了python利用beautifulSoup实现爬虫,需要的朋友可以参考下
    2014-09-09
  • 详解 python logging日志模块

    详解 python logging日志模块

    这篇文章主要介绍了详解 python logging日志模块,记录日志最简单的方法就是在你想要记录的地方加上一句 print , 我相信无论是新手还是老鸟都经常这么干。在简单的代码中或者小型项目中这么干一点问题都没有,需要的朋友可以参考下
    2022-01-01
  • Python中使用matplotlib库绘制各种图

    Python中使用matplotlib库绘制各种图

    这篇文章主要介绍了Python中使用matplotlib库绘制各种图方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python JSON常用编解码方法代码实例

    Python JSON常用编解码方法代码实例

    这篇文章主要介绍了Python JSON常用编解码方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Python基础详解之邮件处理

    Python基础详解之邮件处理

    这篇文章主要介绍了Python基础详解之邮件处理,文中有非常详细的代码示例,对正在学习python基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • 在keras中model.fit_generator()和model.fit()的区别说明

    在keras中model.fit_generator()和model.fit()的区别说明

    这篇文章主要介绍了在keras中model.fit_generator()和model.fit()的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python nohup 实现远程运行不宕机操作

    python nohup 实现远程运行不宕机操作

    这篇文章主要介绍了python nohup 实现远程运行不宕机操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04

最新评论