4.4.3 3차원 배열의 첨자와 슬라이싱

다음 a는 모양 (2, 3, 4)의 3차원 배열이다.

a = np.arange(24).reshape(2, 3, 4)
a

출력:

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]]])

3차원 배열 (2, 3, 4)는 3행 4열인 2차원 배열 2개로 구성된 배열로 이해하면 쉽다.

코드 a[1]axis=0의 첨자 1로 두 번째 (3, 4) 배열이다.

a[1]

출력:

array([[12, 13, 14, 15],
       [16, 17, 18, 19],
       [20, 21, 22, 23]])

다음 코드는 axis=0의 모든 배열에서 axis=1의 첨자 1인 (2, 4) 모양 2차원 배열이 반환된다.

a[:, 1]

출력:

array([[ 4,  5,  6,  7],
       [16, 17, 18, 19]])

다음 코드로는 위 반환 배열의 axis=2의 첨자 1인 (1, 2) 모양 2차원 배열이 반환된다.

a[:, :, 1]

출력:

array([[ 1,  5,  9],
       [13, 17, 21]])

다음처럼 ...은 해당되는 축(axis)이 모두 :인 것을 의미한다. 즉, a[1, ...]a[1, :, :]와 같다.

a[1, ...]

출력:

array([[12, 13, 14, 15],
       [16, 17, 18, 19],
       [20, 21, 22, 23]])

다음 코드 a[1]a[1, :, :]와 같다.

a[1]

출력:

array([[12, 13, 14, 15],
       [16, 17, 18, 19],
       [20, 21, 22, 23]])
서브목차