파이썬 코드를 보다 낯선 문법을 보고 어떤 의미인지 찾아보다 extended slices 에 대하 찾게 되었다.
https://docs.python.org/release/2.3.5/whatsnew/section-slices.html
여기서 문제가 됐던 문법은 array[::] 에 관한 부분이다.
array[A:B:C] 라고 사용하면 이는 array중 A에서 B 까지 C 간격으로 배열을 생성한다는 의미이다.
A, B, C가 각각 None이라면
A는 처음부터 (0번 index)
B는 가능한 index까지
C는 1을 의미한다.
간단한 예시를 보면 아래와 같다.
>> arr = range(10)
>> arr [0,1,2,3,4,5,6,7,8,9]
>> arr[::2] # 처음부터 끝까지 두 칸 간격으로
# [0,2,4,6,8]
>> arr[1::2] # index 1 부터 끝까지 두 칸 간격으로
# [1,3,5,7,9]
>> arr[::-1] # 처음부터 끝까지 -1칸 간격으로 ( == 역순으로)
# [9,8,7,6,5,4,3,2,1,0]
>> arr[::-2] # 처음부터 끝까지 -2칸 간격으로 ( == 역순, 두 칸 간격으로)
# [9,7,5,3,1]
>> arr[3::-1] # index 3 부터 끝까지 -1칸 간격으로 ( == 역순으로)
# [3,2,1,0]
>> arr[1:6:2] # index 1 부터 index 6 까지 두 칸 간격으로
# [1,3,5]
이런 단순 배열 뿐만 아니라 Image를 다룰때 간단한 flip을 구현하는데도 사용 가능하다.
# image는 tensor와 같은 순서로 H, W, C 순서라 가정하고..
# h flip
img = img[:, ::-1, :]
# v flip
img = img [::-1, :, :]
'Programming > Python' 카테고리의 다른 글
CondaVerificationError를 해결하자 (0) | 2020.10.28 |
---|---|
폴더의 이름을 일괄 변경하자 (0) | 2020.05.27 |
Anaconda 가상환경 구동 및 프로그램실행을 batch로 만들자 (1) | 2020.05.12 |
python에서의 Asterisk는 무슨일을 하는가. (0) | 2020.03.09 |
골뱅이, decorator를 이용하여 함수 실행시간을 측정하자. (0) | 2020.01.07 |