Ellipsis는 Python의 Built-in 상수 객체이며 생략 표현 문자인 ...으로 나타낸다. 주로 다른 slicing 문법들과 결합되어 사용된다. Numpy는 Python의 Ellipsis를 받아들여 Numpy Array Slicing 처리를 효과적으로 하는데 적용하였다.

Python Ellipsis

Python의 Ellipsis에 대한 내용은 Ellipsis 포스트를 참조하자.

Numpy Ellipsis

Numpy 패키지로 넘어오면 Python의 Ellipsis가 비슷한 역할을 하면서 Numpy Array에 적용된다.

일반적인 Slicing

먼저 아래와 같은 예시 Numpy Array를 가정한다.

1
2
3
4
5
6
7
import numpy as np

a = np.array([
  [1, 2, 3],
  [2, 3, 4],
  [3, 4, 5]
])

보통 Numpy Array에서 Slicing은 아래와 같은 코드로 수행한다.

1
2
3
4
5
>>> a[0]
array([1, 2, 3])
>>> a[1:]
array([[2, 3, 4],
       [3, 4, 5]])

Ellipsis Slicing

Numpy Array Slicing 중 [:], [1, :] 과 같이 : 콜론 표현은 ‘해당 차원의 모든 원소’를 의미한다.

Ellipsis Slicing 또한 : 콜론과 같은 것을 의미하는데 다차원에 대해 여러개의 : 콜론을 사용하는 것을 ... 하나로 생략할 수 있다.

예를들어 a[:,2:]가 모든 열에 대해 2번째 행부터 마지막 행까지 Slice한다면 이것은 a[...,2:] 라고 쓸 수 있다.

따라서 일반적인 Slicing 섹션의 같은 예시에 대해 Ellipsis Slicing은 아래와 같이 적용된다.

1
2
3
4
5
6
7
8
9
>>> a[...]
array([[1, 2, 3],
       [2, 3, 4],
       [3, 4, 5]])
>>> a[1:, ...]
array([[2, 3, 4],
       [3, 4, 5]])
>>> a[1:, ..., 0]
array([2, 3])

Meta Info

Categories: ,

Published At:

Modified At:

Leave a comment