1차원 array

indexing

a = ['a','b','c','d','e','f'] 이런 배열이 있을때, 기본 인덱싱은

a[0] 이렇게 한다 (a[0]은 0번째 element를 indexing하며 따라서 'a'가 된다.)

이때 a[-1] 이렇게 음수도 쓸 수 있으며 마지막 element부터 -1, -2로 indexing된다. (따라서 a[-1]은 'f'가 된다)


slicing

부분집합을 가져오는 slicing은 colon을 한 번 쓰거나, 두 번 쓸 수 있으며,

각각 [start:stop], [start:stop:step] 이라는 의미가 된다.

또한 colon기호는 대괄호 안에서만 쓸 수 있으나 slice() 객체를 사용하면 밖에서 할 수도 있다.

예를 들어 a[1:3] 하면 ['b', 'c']가 되는데, 

a[1:3]은 a[slice(1,3)]과 같기 때문에 

아래처럼 두줄에 나눠쓰는게 가능하다.

> col = slice(1,3)

> a[col]


slicing의 다양한 옵션은 여기를 보면 쉽게 파악할 수 있다.


2차원 array

indexing

a = [[1,2,3],[4,5,6]] 이런 배열이 있을때, 기본 인덱싱은

a[0][1] 이렇게 한다 (a[0][1]은 0번째 row, 1번째 column을 의미하며 값은 2가 된다)

근데 2차원 인덱싱의 경우는 a[0][1]대신 a[0,1]로도 할 수 있다.


slicing

다른건 쉬운데 index을 위한 comma와 slicing을 위한 colon이 같이 쓰이면 헷갈릴 수 있다.

예를 들어 위의 a배열에 대해서 a[:,0:2]라고 하면 [[1,2],[4,5]]가 되는데..

a[:,0:2]는 

a[slice(None, None, None), slice(0, 2, None)]과 같고, 3줄로 풀어쓰면 다음과 같다.


> row = slice(None, None, None)  # 모든 row를 원한다.

> col = slice(0, 2, None)  # 첫번째, 두번째 컬럼만 원한다(마지막 컬럼 배제)

> a[row,col]



반응형

'Programming > Python' 카테고리의 다른 글

파이선환경 그리고 requirements.txt  (0) 2020.09.20
Google Colab(Colaboratory Lab) 팁  (0) 2019.03.07
pudb  (0) 2018.11.15
Anaconda & Jupyter  (0) 2018.03.23
python numpy  (0) 2018.02.28

+ Recent posts