<질문>
이것은 나왔다Hidden features of Python,하지만 기능 작동 방식을 설명하는 좋은 문서 나 예제를 볼 수 없습니다.
<답변1>
Ellipsis
, 또는...
숨겨진 기능이 아니라 상수 일뿐입니다. 언어 구문의 일부인 자바 스크립트 ES6와는 상당히 다릅니다. 내장 클래스 나 Python 언어 구성이이를 사용하지 않습니다.
따라서 구문은 전적으로 사용자 또는 다른 사람이 코드를 작성하여 이해하는 데 달려 있습니다.
Numpy는documentation. 몇 가지 예here.
자신의 수업에서 다음과 같이 사용합니다.
>>> class TestEllipsis(object):
... def __getitem__(self, item):
... if item is Ellipsis:
... return "Returning all items"
... else:
... return "return %r items" % item
...
>>> x = TestEllipsis()
>>> print x[2]
return 2 items
>>> print x[...]
Returning all items
물론python documentation, 및language reference. 그러나 그것들은별로 도움이되지 않습니다.
<답변2>
생략 부호는 numpy에서 더 높은 차원의 데이터 구조를 분할하는 데 사용됩니다.
의미하도록 설계되었습니다.이 점에서, 다수의 슬라이스로 삽입 전체 ( :
) 모든 치수 다차원 슬라이스 연장.
예:
>>> from numpy import arange
>>> a = arange(16).reshape(2,2,2,2)
이제 2x2x2x2 차수의 4 차원 행렬이 있습니다. 4 차원의 모든 첫 번째 요소를 선택하려면 줄임표 표기법을 사용할 수 있습니다.
>>> a[..., 0].flatten()
array([ 0, 2, 4, 6, 8, 10, 12, 14])
이는
>>> a[:,:,:,0].flatten()
array([ 0, 2, 4, 6, 8, 10, 12, 14])
자신의 구현에서 위에서 언급 한 계약을 무시하고 적합하다고 생각되는 모든 용도로 사용할 수 있습니다.
<답변3>
이것은 슬라이스와 관련이없는 Ellipsis의 또 다른 용도입니다. "완료"를 나타내는 표시로 대기열과 스레드 내 통신에서 자주 사용합니다. 그것은 거기에 있고, 그것은 객체이고, 싱글 톤이고, 그 이름은 "부족"을 의미하고, 과도하게 사용 된 None이 아닙니다 (일반 데이터 흐름의 일부로 큐에 넣을 수 있음). YMMV.
<답변4>
다른 답변에서 언급했듯이 슬라이스를 만드는 데 사용할 수 있습니다. 전체 조각 표기법을 많이 작성하지 않으려는 경우 유용합니다 (:
) 또는 조작되는 배열의 차원이 무엇인지 확실하지 않을 때.
내가 강조해야 할 중요하다고 생각한 것은 다른 답변에서 누락 된 것은 채울 치수가 더 이상 없을 때도 사용할 수 있다는 것입니다.
예:
>>> from numpy import arange
>>> a = arange(4).reshape(2,2)
이로 인해 오류가 발생합니다.
>>> a[:,0,:]
Traceback (most recent call last):
File "", line 1, in
IndexError: too many indices for array
이것은 작동합니다 :
a[...,0,:]
array([0, 1])
'개발 > Python' 카테고리의 다른 글
[파이썬] ImportError: No Module Named bs4 (BeautifulSoup) (0) | 2021.01.13 |
---|---|
Python에서 HTML을 이스케이프하는 가장 쉬운 방법은 무엇입니까? (0) | 2021.01.13 |
Python에서 문자열을 Enum으로 변환 (0) | 2021.01.12 |
if A 와 if A is not None (1) | 2021.01.12 |