주로 파이썬에서 배열 인덱싱을 위해 콜론(:)을 사용한다.
>>> x = [1,2,3,4,5]
>>> x = [:-1]
[1,2,3,4]
numpy에서도 마찬가지이다.
>>> x = np.array(range(10)).reshape(2,5)
array([[0,1,2,3,4],
[5,6,7,8,9]])
>>> x[:]
array([[0,1,2,3,4],
[5,6,7,8,9]])
>>> x[:,:]
array([[0,1,2,3,4],
[5,6,7,8,9]])
ellipsis를 사용하면 : 사용한 것 처럼 결과가 나온다.
>>> x[...]
array([[0,1,2,3,4],
[5,6,7,8,9]])
3차원 이상의 배열에서 사용해보자.
>>> x = np.array(range(27)).reshape(3,3,3)
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],
[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],
[[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
>>> x[...]
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],
[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],
[[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
>>> x[:]
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],
[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],
[[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
일단은 :, ... 모두 같은 결과가 나온다. 한 번 배열내 부분 원소만 출력해보자.
>>> x[1,...]
array([[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]])
>>> x[1,:]
array([[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]])
똑같다.
그럼 뭐가 다른거지?
>>> x[:,:,1]
array([[ 1, 4, 7],
[10, 13, 16],
[19, 22, 25]])
>>> x[...,...,1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: an index can only have a single ellipsis ('...')
>>>
...은 한번만 사용할 수 있고 :는 여러번 사용 가능하다.
인덱스 슬라이싱 외에 ellipsis가 사용되는 곳이 여러군데 있는 것 같다.
pass 대신으로도 사용 가능한 것 같고.. 뭐 그 외에는 필요하면 찾아보는 것이 좋겠다.
'Programming > Python' 카테고리의 다른 글
FLASK 2 - static 폴더 생성, 서버에서 데이터 전송 (0) | 2020.12.14 |
---|---|
FLASK 1 - Flask 가상환경 생성, 패키지 설치 및 app.py (0) | 2020.12.14 |
Python N-gram 생성 (0) | 2020.01.02 |
Python Palindrome(회문) 판별 (0) | 2020.01.02 |
Python 객체 파일에 저장하기 (0) | 2020.01.01 |