indexing
파이썬 리스트와 달리 [행, 열] 인덱싱 지원
slicing
파이썬 리스트와 달리 행과 열을 나눠서 슬라이싱 지원
[이상 : 미만]
또 슬라이싱에서 증가값(step)을 지원하는데, [시작값 : 끝값 : 증가index값] 방식이다.
따라서 [::건너뛸 행 수,::건너뛸 열 수] 이렇게 사용할 수도 있다.
y = np.array([[1,3,4],[4,5,6]])
>array([[1, 3, 4],
[4, 5, 6]])
y[0, ::2]
>array([1, 4])
행과 열을 구분할 수 있으므로
y[0][1]
>3
0행 1열을 의미하고 다음 코드도 같은 결과를 가진다
y[0, 1]
>3
그런데 전체 배열에서 증가값을 적용하려면 어떻게 해야할까?
간단히 [ :, ::증가값 ]방식으로 하면 된다. 앞의 ':'는 '전체 행에서'라는 의미다.
뒤에 ':'가 온다면 '전체 열에서'라는 의미다.
pandas를 공부하다가 이런 형식의 슬라이싱이 자주 나와서 뭔지 몰라 헤멨는데 이미 배웠던 것이었다!
아래는 '전체 행에서 2번째 열 이상만 남긴다' 는 의미다
y[:,2:]
>array([[4],
[6]])
아래는 '전체 열에서 0번째 행 미만만 남긴다'는 의미다
y[:0, :]
>array([], shape=(0, 3), dtype=int64)
또 이렇게 인덱싱하여 특정값을 바꿀수 있다.
y[0,0] = 23
y
>array([[23, 3, 4],
[ 4, 5, 6]])
2차원 이상의 데이터는 [n차원][n-1차원][...][행][열] 순서로 인덱싱할 수 있다.
narr = np.array(range(16)).reshape(-1, 2, 2)
narr
>array([[[ 0, 1],
[ 2, 3]],
[[ 4, 5],
[ 6, 7]],
[[ 8, 9],
[10, 11]],
[[12, 13],
[14, 15]]])
narr[0][1][1]
>3
단, 범위를 벗어나는 값으로 인덱싱을 하면 indexError가 난다.
'numpy' 카테고리의 다른 글
ones & zeros & empty (0) | 2022.03.24 |
---|---|
arange (0) | 2022.03.22 |
reshape, flatten (0) | 2022.03.19 |
shape, ndim, size, T (0) | 2022.03.19 |
array (0) | 2022.03.18 |