문제

이게 나왔는데 파이썬의 숨겨진 기능, 하지만 기능 작동 방식을 설명하는 좋은 문서나 예제를 볼 수 없습니다.

도움이 되었습니까?

해결책

내장 클래스에서는 이를 사용하지 않으므로 자신의 클래스에서 사용합니다.

Numpy는 다음과 같이 이를 사용합니다. 선적 서류 비치.몇 가지 예 여기.

자신의 수업에서는 다음과 같이 사용합니다.

>>> 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

물론, 파이썬 문서, 그리고 언어 참조.하지만 그런 것들은 그다지 도움이 되지 않습니다.

다른 팁

줄임표는 고차원 데이터 구조를 분할하는 데 사용됩니다.

라는 뜻으로 디자인되었습니다 이 시점에서 전체 슬라이스를 최대한 많이 삽입합니다(:) 다차원 조각을 모든 차원으로 확장합니다..

:

>>> 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])

자신의 구현에서는 위에서 언급한 계약을 무시하고 적합하다고 판단되는 모든 것에 사용할 수 있습니다.

이것은 슬라이스와 관련이 없는 Ellipsis의 또 다른 용도입니다.나는 대기열과의 스레드 내 통신에서 "완료"를 나타내는 표시로 자주 사용합니다.그것은 거기에 있고, 객체이고, 싱글톤이고, 그 이름은 "부족함"을 의미하며, 과도하게 사용되는 None(일반적인 데이터 흐름의 일부로 대기열에 넣을 수 있음)이 아닙니다.YMMV.

다른 답변에서 언급했듯이 슬라이스를 만드는 데 사용할 수 있습니다.전체 슬라이스 표기법을 많이 작성하고 싶지 않을 때 유용합니다(:) 또는 조작되는 배열의 차원이 무엇인지 확실하지 않은 경우.

제가 강조하는 것이 중요하다고 생각했는데 다른 답변에서 누락된 점은 더 이상 채워야 할 차원이 없을 때에도 사용할 수 있다는 것입니다.

예:

>>> from numpy import arange
>>> a = arange(4).reshape(2,2)

이로 인해 오류가 발생합니다.

>>> a[:,0,:]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: too many indices for array

이것은 작동합니다:

a[...,0,:]
array([0, 1])
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top