Я знаю, @
что для декораторов, но для чего @=
в Python? Это просто резервирование для какой-то будущей идеи?
Это только один из моих многочисленных вопросов во время чтения tokenizer.py
.
python
python-3.x
operators
matrix-multiplication
python-3.5
Октавия Тогами
источник
источник
:=
оператором моржа Python 3.8 вы получаете то, что известно как@:=
оператор тернистой розы. (Или в Японии его называют оператором Элвис-Морж.)Ответы:
Из в документации :
@
Оператор был введен в Python 3.5.@=
матричное умножение с последующим присваиванием, как и следовало ожидать. Они отображаются на__matmul__
,__rmatmul__
или__imatmul__
подобно тому , как+
и+=
сопоставить__add__
,__radd__
или__iadd__
.Оператор и обоснование этого подробно обсуждаются в PEP 465 .
источник
@=
и@
введены ли в Python 3.5 новые операторы, выполняющие умножение матриц . Они призваны прояснить путаницу, существовавшую до сих пор с оператором,*
который использовался либо для поэлементного умножения, либо для умножения матриц в зависимости от соглашения, используемого в этой конкретной библиотеке / коде. В результате в будущем оператор*
предназначен для использования только для поэлементного умножения.Как объяснено в PEP0465 , были введены два оператора:
A @ B
, используемый аналогичноA * B
A @= B
, используемая аналогичноA *= B
Матричное Умножение против Поэлементного Умножения
Чтобы быстро выделить разницу, для двух матриц:
Поэлементное умножение даст:
Матричное умножение даст:
Использование в Numpy
До сих пор Numpy использовал следующее соглашение:
*
оператор (и арифметические операции в целом) были определены как поэлементно операций на ndarrays и в качестве матрицы-умножения на numpy.matrix типа.Метод / функция
dot
была использована для матричного умножения ndarraysВведение
@
оператора значительно облегчает чтение кода с умножением матриц. PEP0465 дает нам пример:Понятно, что последнюю реализацию гораздо проще читать и интерпретировать как уравнение.
источник
@
было реализовано дляlist
, а это не так.@
связаноnp.matmul
, а неnp.dot
. Они похожи, но не одинаковы.@ - новый оператор для умножения матриц, добавленный в Python3.5
Ссылка: https://docs.python.org/3/whatsnew/3.5.html#whatsnew-pep-465
пример
источник