Python中@(at)操作符的用法是什么?

5

我正在尝试运行一段Python代码。这段代码使用了一个'@'(at)运算符。我以前从未见过它,而且谷歌没有任何结果。

init = model.potentials[key].init_weights(model)
if init.ndim==2:
    U, S, Vt = np.linalg.svd(init, False)
    init = U@Vt

它显示以下错误信息:
init = U@Vt
        ^
SyntaxError: invalid syntax

我正在使用Python 2.7进行编译。有人知道这个运算符吗?

这种情况看起来像是打印错误。 - Daniil Ryzhkov
1个回答

11

@ 操作符是在 PEP 465 中提出的,并被纳入到 Python 3.5 中。由于您使用的是较旧版本的 Python,因此无法使用它。它用于矩阵乘法(通常如此,但实际上可以让 @ 做任何事情)。如果您正在使用 NumPy 数组,则可以使用 numpy.dot() 来代替,例如:

init = model.potentials[key].init_weights(model)
if init.ndim==2:
    U, S, Vt = np.linalg.svd(init, False)
    init = np.dot(U, Vt)

严格来说,@np.matmul,而不是np.dot - Eric
1
np.matmul 本身是新的。在这个二维上下文中,np.dot 是等效的。它描述了 dot具有不同广播规则的替代矩阵乘积 - hpaulj
这里是有关np.matmul的文档链接:http://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.matmul.html - Will Martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接