[Numpy] 배열(Array) 슬라이싱

Hunie_07·2026년 3월 1일

Numpy

목록 보기
4/8
post-thumbnail

📌 Array 인덱싱 / 슬라이싱

  • 인덱싱(indexing) : 배열의 위치나 조건을 지정해 배열의 원소를 선택하는 것
  • 슬라이싱(slicing) : 범위를 지정해 배열의 원소를 선택하는 것

📌 Array 슬라이싱

1️⃣ 1차원 배열의 슬라이싱

arr1 = np.arange(4, 17)
arr1

- 출력

array([ 4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16])

1) 배열[시작위치:끝위치]

  • 시작위치 에서 끝위치-1 에 해당하는 배열의 원소를 반환
# 3번에서 7번까지의 요소
arr1[3:8]

- 출력

array([ 7,  8,  9, 10, 11])

2) 배열[:끝위치]

  • 처음 부터 끝위치-1 원소 반환
arr1[:4]

- 출력

array([4, 5, 6, 7])

3) 배열[시작위치:]

  • 시작위치 부터 마지막 원소까지 반환
arr1[3:]

- 출력

array([ 7,  8,  9, 10, 11, 12, 13, 14, 15, 16])

4) 배열[:]

  • 모든 원소 반환
arr1[:]

- 출력

array([ 4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16])

5) 배열[ : : step]

  • step 만큼 건너뛰며 원소 반환
arr1[::2]

- 출력

array([ 4,  6,  8, 10, 12, 14, 16])
  • 역순 반환
arr1[::-1]

- 출력

array([16, 15, 14, 13, 12, 11, 10,  9,  8,  7,  6,  5,  4])

2️⃣ 2차원 배열의 슬라이싱

arr2 = np.array([[ 1,  2,  3,  4],
       			 [50, 60, 70, 80],
       			 [ 9, 10, 11, 12]])

1) 배열[행시작위치:행끝위치, 열시작위치:열끝위치]

2행의 모든 요소

  • 아래 코드 결과 동일하다.
arr2[2]
arr2[2,:]
arr2[2][:]

- 출력

array([ 9, 10, 11, 12])

3열의 모든 요소

arr2[:,3]

- 출력

array([ 4, 80, 12])
  • 단, 다음과 같은 코드는 에러가 발생한다. 반드시 행을 지정해줘야 하며 아래의 코드는 arr2[:] 전체 요소 중 [3] 3행을 반환하는 것으로 arr2[3] 과 같다. 따라서 IndexError 가 발생하는 것이다.
arr2[:][3]

- 출력

IndexError: index 3 is out of bounds for axis 0 with size 3

2-1) 배열[행위치][열시작위치:열끝위치]

  • 특정 행을 선택한 후 열을 슬라이싱
arr2[1][1:3]

- 출력

array([60, 70])

2-2) 슬라이싱 된 배열에 값을 지정

arr2[1][1:3] = np.array([-10, -20])
arr2

- 출력

array([[  1,   2,   3,   4],
       [ 50, -10, -20,  80],
       [  9,  10,  11,  12]])

3차원 배열 슬라이싱

arr3 = np.arange(1, 13).reshape(2, 3, 2)
arr3

- 출력

array([[[ 1,  2],
        [ 3,  4],
        [ 5,  6]],

       [[ 7,  8],
        [ 9, 10],
        [11, 12]]])

arr3[1]

- 출력

array([[ 7,  8],
       [ 9, 10],
       [11, 12]])

# 1
arr3[1][2]
# 2
arr3[1, 2]
# 3
arr3[1][2,:]

- 출력

array([11, 12])

# 1
arr3[1][0][-1]
# 2
arr3[1,0,-1]

- 출력

np.int64(8)

0개의 댓글