Python 中的 '@=' 符号代表什么?

2025-02-18 09:23:00
admin
原创
40
摘要:问题描述:我知道@for 是装饰器,但是@=Python 中的 for 是什么?它只是为某些未来的想法保留的吗?这只是我在阅读时提出众多问题之一tokenizer.py。解决方案 1:来自文档 :​(at) 运算符@旨在用于矩阵乘法。没有内置 Python 类型实现此运算符。该@运算符是在 Python 3....

问题描述:

我知道@for 是装饰器,但是@=Python 中的 for 是什么?它只是为某些未来的想法保留的吗?

这只是我在阅读时提出众多问题之一tokenizer.py


解决方案 1:

来自文档 :​

(at) 运算符@旨在用于矩阵乘法。没有内置 Python 类型实现此运算符。

@运算符是在 Python 3.5 中引入的。@=正如您所期望的那样,它是矩阵乘法,然后是赋值。它们映射到__matmul____rmatmul____imatmul__类似于++=映射到__add____radd____iadd__

PEP 465中详细讨论了该运算符及其背后的原理。

解决方案 2:

@=@是 Python 3.5中引入的执行矩阵乘法的新运算符。它们旨在澄清迄今为止​​存在的混淆,即该运算*符用于元素乘法或矩阵乘法,具体取决于特定库/代码中采用的约定。因此,将来,该运算符*仅用于元素乘法。

如PEP0465中所述,引入了两个运算符:

  • 一个新的二元运算符A @ B,用法类似A * B

  • 就地版本A @= B,用法类似A *= B

矩阵乘法与元素乘法

为了快速突出差异,对于两个矩阵:

A = [[1, 2],    B = [[11, 12],
     [3, 4]]         [13, 14]]
  • 元素乘法将产生:

A * B = [[1 * 11,   2 * 12], 
         [3 * 13,   4 * 14]]
  • 矩阵乘法将产生:

A @ B  =  [[1 * 11 + 2 * 13,   1 * 12 + 2 * 14],
           [3 * 11 + 4 * 13,   3 * 12 + 4 * 14]]

在 Numpy 中的用法

到目前为止,Numpy 使用以下约定:

  • *运算符(以及一般的算术运算符)被定义为ndarrays上的元素运算和numpy.matrix类型上的矩阵乘法。

  • 方法/函数 dot用于 ndarrays 的矩阵乘法

运算符的引入@使得涉及矩阵乘法的代码更易于阅读。PEP0465 给出了一个例子:

# Current implementation of matrix multiplications using dot function
S = np.dot((np.dot(H, beta) - r).T,
            np.dot(inv(np.dot(np.dot(H, V), H.T)), np.dot(H, beta) - r))

# Current implementation of matrix multiplications using dot method
S = (H.dot(beta) - r).T.dot(inv(H.dot(V).dot(H.T))).dot(H.dot(beta) - r)

# Using the @ operator instead
S = (H @ beta - r).T @ inv(H @ V @ H.T) @ (H @ beta - r)

显然,最后的实现作为一个方程式更容易阅读和解释。

解决方案 3:

@ 是 Python3.5 中新增的矩阵乘法运算符

参考:https://docs.python.org/3/whatsnew/3.5.html#whatsnew-pep-465

例子

C = A @ B

解决方案 4:

Numpy 1.25 将支持使用@=如下矩阵乘法:

在此处输入图片描述

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1325  
  IPD(Integrated Product Development)流程作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。它涵盖了从产品概念产生到产品退市的整个生命周期,通过整合跨部门团队、优化流程等方式,显著提升产品开发的效率和质量,进而为项目的成功奠定坚实基础。深入探究IPD流程的五个阶段与项目成功之间...
IPD流程分为几个阶段   4  
  华为作为全球知名的科技企业,其成功背后的管理体系备受关注。IPD(集成产品开发)流程作为华为核心的产品开发管理模式,其中的创新管理与实践更是蕴含着丰富的经验和深刻的智慧,对众多企业具有重要的借鉴意义。IPD流程的核心架构IPD流程旨在打破部门墙,实现跨部门的高效协作,将产品开发视为一个整体的流程。它涵盖了从市场需求分析...
华为IPD是什么   3  
  IPD(Integrated Product Development)研发管理体系作为一种先进的产品开发模式,在众多企业的发展历程中发挥了至关重要的作用。它不仅仅是一套流程,更是一种理念,一种能够全方位提升企业竞争力,推动企业持续发展的有效工具。深入探究IPD研发管理体系如何助力企业持续发展,对于众多渴望在市场中立足并...
IPD管理流程   3  
  IPD(Integrated Product Development)流程管理旨在通过整合产品开发流程、团队和资源,实现产品的快速、高质量交付。在这一过程中,有效降低成本是企业提升竞争力的关键。通过优化IPD流程管理中的各个环节,可以在不牺牲产品质量和性能的前提下,实现成本的显著降低,为企业创造更大的价值。优化产品规划...
IPD流程分为几个阶段   4  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用