Python에서 '@=' 기호는 무엇입니까?
알고있어요@
데코레이터를 위한 건데@=
Python에서는요?그냥 미래 아이디어를 위한 예약인가요?
이것은 내가 책을 읽으면서 많은 질문들 중 하나일 뿐이다.tokenizer.py
.
매뉴얼에서 다음 항목을 참조하십시오.
그
@
(at) 연산자는 행렬 곱셈을 위해 사용된다.이 연산자를 구현하는 기본 제공 Python 유형이 없습니다.
그@
연산자는 Python 3.5에서 도입되었습니다. @=
예상대로 행렬 곱셈에 이어 할당입니다.에 매핑됩니다.__matmul__
,__rmatmul__
또는__imatmul__
하는 것과 비슷하다+
그리고.+=
로 매핑하다.__add__
,__radd__
또는__iadd__
.
운영자와 그 이면에 있는 논거는 PEP 465에 자세히 설명되어 있다.
@=
그리고.@
행렬 곱셈을 수행하는 Python 3.5에 도입된 새로운 연산자입니다.작업자와 함께 지금까지 존재했던 혼란을 명확히 하기 위한 것입니다.*
특정 라이브러리/코드에 적용된 규칙에 따라 요소별 곱셈 또는 행렬 곱셈에 사용되었습니다.그 결과, 장래에, 오퍼레이터는*
는 요소별 곱셈에만 사용됩니다.
PEP0465에서 설명한 바와 같이 다음 2개의 연산자가 도입되었습니다.
- 새 이진 연산자
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는 다음과 같은 규칙을 사용했습니다.
그
*
연산자(및 일반적으로 산술 연산자)는 ndarray에서는 요소별 연산자로, numpy.darray 유형에서는 행렬 곱셈으로 정의되었습니다.방법/기능
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)
분명히 마지막 구현은 방정식으로 읽고 해석하기가 훨씬 쉽습니다.
@는 Python 3.5에 추가된 매트릭스 곱셈의 새로운 연산자입니다.
참고 자료: https://docs.python.org/3/whatsnew/3.5.html#whatsnew-pep-465
예
C = A @ B
언급URL : https://stackoverflow.com/questions/27385633/what-is-the-symbol-for-in-python
'programing' 카테고리의 다른 글
커스텀 리스트 Android의 아이템에 대한 클릭 문제 표시 (0) | 2023.01.24 |
---|---|
Selenium - 페이지가 완전히 로드될 때까지 기다리는 방법 (0) | 2023.01.14 |
Java에서 늘과 문자열을 대조하는 방법은 무엇입니까? (0) | 2023.01.14 |
비트맵/파일 경로에서 그리기 가능 (0) | 2023.01.14 |
Vue - 중첩된 개체의 데이터를 표시하려고 할 때 렌더에 오류가 발생했습니다. (0) | 2023.01.14 |