这个答案是否正确:https://stackoverflow.com/a/39662710/1175080?
引用该答案。
在Python 3.5中,dot产品有一个新的运算符,所以你 可以写一个= A @ B而不是a = numpy.dot(A,B)
它似乎对我不起作用。
try/finally
但链接的答案已收到6个赞成票,所以我必须遗漏一些东西。您能否提供一个完整的示例,说明如何使用$ python3
Python 3.6.1 (default, Apr 4 2017, 09:40:21)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.38)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a @ b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for @: 'list' and 'list'
>>>
运算符计算点积?
答案 0 :(得分:8)
请参阅what's new in Python 3.5, section matrix mult (PEP 465):
PEP 465添加了
@
中缀运算符用于矩阵乘法。 目前,没有内置的Python类型实现新的运算符,但是,可以通过定义__matmul__()
,__rmatmul__()
和__imatmul__()
来实现常规,反映和就地矩阵乘法。这些方法的语义类似于定义其他中缀算术运算符的方法。
所以,你必须自己实现这些方法。
或者,使用已经支持新运算符的numpy>=1.10
:
>>> import numpy
>>> x = numpy.ones(3)
>>> m = numpy.eye(3)
>>> x @ m
array([ 1., 1., 1.])