python3.5 新加的矩阵乘法的专用中缀运算符 "@"

本文介绍Python中新增的矩阵乘法运算符@,该符号简化了矩阵乘法的表达,使得代码更加清晰易读。通过定义__matmul__()等方法,用户可以为自定义类型实现矩阵乘法。NumPy 1.10及pytorch等库已支持此特性,示例代码展示了其使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文翻自PEP 465

目前虽然没有内置的Python类型实现这个新运算符,但是,它可以通过定义__matmul __(),__ rmatmul __()和__imatmul __()来实现常规,反射和就地的矩阵乘法。这些方法的语义类似于定义其他中缀算术运算符的方法。矩阵乘法在数学,科学,工程学的许多领域都是一个非常常见的操作,并且“@”使我们能编写更清晰的代码:

S = (H @ beta - r).T @ inv(H @ V @ H.T) @ (H @ beta - r)

来替代

S = dot((dot(H, beta) - r).T,
        dot(inv(dot(dot(H, V), H.T)), dot(H, beta) - r))

NumPy 1.10已经支持这个新的操作(经过译者测试,pytorch也已支持):

>>> import numpy

>>> x = numpy.ones(3)
>>> x
array([ 1., 1., 1.])

>>> m = numpy.eye(3)
>>> m
array([[ 1., 0., 0.],
       [ 0., 1., 0.],
       [ 0., 0., 1.]])

>>> x @ m
array([ 1., 1., 1.])

另见详细解释

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值