python中@运算符和*运算符在矩阵乘法中的区别与作用

  我们在看python程序时,经常可以看到@运算符和*运算符,其中@运算符在传统python中通常是作为装饰器使用的。但是在Python 3.5之后,它又具备了矩阵乘法运算的功能。下面使用示例来对比这两个运算符对矩阵运算的影响:
  导入用到numpy包:

import numpy as np

  创建一个维度为2×3×3的数组a,结果如下图所示:

a=np.arange(1,10).reshape(3,3)
a=np.expand_dims(a,0).repeat(2,0)
print(a)

在这里插入图片描述
  再创建一个维度为2×3×3的数组b,结果如下图所示:

b=np.eye(3)
b=np.expand_dims(b,0).repeat(2,0)
print(b)

在这里插入图片描述
  下面,我们执行a*b,可以看到,输出为:
在这里插入图片描述
  这表明,运算符*在矩阵运算中的功能是逐元素的乘法(称为Hadamard积(Hadamard product,数学符号⊙))。
  下面,我们执行a@b,可以看到,输出为:

在这里插入图片描述
  这表明,运算符@在矩阵运算中的功能是矩阵乘法。也即,在矩阵乘法中,b矩阵右乘的作用是交换被乘矩阵的1、2两列,结果即是。其实@运算符和numpy的matmul是一样的,如下图所示:

在这里插入图片描述
  只是当引入了@运算符后,我们可以直接简单使用@运算符来实现矩阵乘法了。还一点需要注意的是,在numpy的矩阵乘法中,默认的乘法是不对第一个维度进行操作的,这点也可以从上面的结果中看出(输出结果的第一维都一样)。文章来源地址https://uudwc.com/A/ABxkB

原文地址:https://blog.csdn.net/weixin_44120025/article/details/122373000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年07月27日 06:56
【Linux后端服务器开发】IP协议
下一篇 2023年07月27日 06:58