programing

파이썬에서 줄임표 슬라이싱 구문을 어떻게 사용합니까?

easyjava 2023. 6. 13. 22:54
반응형

파이썬에서 줄임표 슬라이싱 구문을 어떻게 사용합니까?

이것은 Python의 Hidden 기능에서 나타났지만, 저는 이 기능이 어떻게 작동하는지 설명하는 좋은 문서나 예제를 볼 수 없습니다.

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

때 전체 조각():을 최대한 많이 삽입하여 다차원 조각을 모든 차원으로 확장하도록 설계되었습니다.

:

>>> 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또는...숨겨진 특징이 아니라 상수일 뿐입니다.언어 구문의 일부인 Javascript ES6와는 상당히 다릅니다.기본 제공 클래스나 Python 언어 구성은 이를 사용하지 않습니다.

그래서 그것에 대한 구문은 전적으로 당신이나 다른 사람이 그것을 이해하기 위한 코드를 작성하는 것에 달려 있습니다.

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

물론 파이썬 설명서와 언어 참조가 있습니다.하지만 그것들은 별로 도움이 되지 않습니다.

이것은 조각과는 관련이 없는 생략형의 또 다른 용도입니다.저는 종종 "완료"를 나타내는 표시로 대기열과 스레드 내 통신에 사용합니다. 대기열은 "완료"를 나타내는 표시입니다. 개체가 있고, 단일 톤이며, 이름은 "부족"을 의미하며, 과도하게 사용된 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])

언급URL : https://stackoverflow.com/questions/118370/how-do-you-use-the-ellipsis-slicing-syntax-in-python

반응형