python中 是什么符号_Python中的'@ ='符号是什么?

为了解决Python中矩阵乘法与元素级乘法之间的混淆问题,Python 3.5引入了新的运算符@来专门执行矩阵乘法。这使得代码更加清晰易读,并且避免了与*运算符的含义冲突。此改变还影响了Numpy库的行为,现在Numpy中的*运算符用于元素级乘法,而矩阵乘法则通过@运算符实现。

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

@=而@在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用于ndarray的矩阵乘法

@运算符的引入使涉及矩阵乘法的代码更易于阅读。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)

显然,最后一种实现更易于阅读和解释为等式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值