본문 바로가기
  • CobsLab upgrades your company value by AI technology
Numpy

Numpy 기초 (3) - 배열 차원, 배열 shape, dtype

by dmkdmk 2023. 1. 13.

안녕하세요 콥스랩(COBS LAB)입니다. 오늘 소개해드릴 주제는 Numpy입니다. 저번시간에는 배열 인덱싱 및 슬라이싱, 다양한 함수들에 대해서 알아보았습니다. 이번 시간에는 배열 차원, 배열 shape, dtype에 대해서 알아보도록 하겠습니다.

 

목차

  • 배열 차원
  • 배열 shape
  • dtype

 

 

넘파이(NumPy)의 주요 대상은 다차원 배열입니다. 즉 넘파이의 각 요소들은 같은 데이터 타입을 가지고 있으며, 여러 차원의 배열 형태로 데이터를 가지고 있습니다.

 

배열의 차원

넘파이의 각 차원은 axes(축)으로 불립니다.

np.array([1,2,3,4,5])

>>>
array([1, 2, 3, 4, 5])

위 배열은 1차원 배열이며 1차원 배열의 길이는 5입니다.

np.array([[1,2,3,4,5],[6,7,8,9,10]])

>>>
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])

위 배열은 2차원 배열입니다. 첫 번째 차원은 [1,2,3,4,5]으로 길이가 5입니다.

두 번째 차원은 [6,7,8,9,10]으로 구성되어 있으며 길이가 5입니다.

여기에 계속해서 차원을 추가해 나갈 수 있습니다. 따라서 1, 2, 3,... n 개의 차원으로 계속해서 많은 차원의 배열을 선언할 수 있습니다.

 

 

ndim은 해당 배열의 차원을, size는 해당 배열의 칸 수를 알 수 있습니다.

arr = np.array([1, 2, 3, 4, 5]) #1차원 배열 생성

print(arr.ndim) #해당 배열의 차원 확인하기

>>
1

print(arr.size) #해당 배열의 칸 수 확인하기

>>
5

arr2 = np.array([[1,2,3,4,5],[6,7,8,9,10]])

print(arr2.ndim) #해당 배열의 차원 확인하기

>>
2

print(arr2.size) #해당 배열의 칸 수 확인하기

>> 
10

 

 

배열의 shape

shape으로 배열의 형상을 알 수 있습니다. 형상이란 N차원 배열에서 그 배열의 '각 차원의 크기(원소 수)'를 배열의 형상이라고 합니다.

a = np.array([1,2,3,4,5])


b = np.array([[ 1., 0., 0.],
               [ 0., 1., 2.]])


c = np.array([[ 1., 0., 0.],
               [ 0., 1., 2.],
              [ 3., 4., 7.],
              [ 3., 0., 1.]])

a.shape

>>>
(5,)

b.shape

>>>
(2,3)

c.shape

>>>
(4,3)

배열 a는 1차원 길이가 5인 배열이므로 shape은 (5, )입니다.

배열 b는 2차원이며 각 차원의 길이가 3인 배열이므로 (2, 3)입니다. 2행 3열로 이루어졌다고 볼 수 있습니다.

배열 c는 4차원이며 각 차원의 길이가 3인 배열이므로 (4, 3)입니다. 4행 3열로 이루어진 배열이라고 할 수 있습니다.

 

확인하고 싶은 배열에. shape을 더하면 해당 배열의 형상을 확인할 수 있습니다. 1차원 배열에서 (m, )은 m칸으로 구성된 1차원 배열이라는 의미입니다. 2차원 배열에서의 (m, n)는 m행 n열로 구성된 2차원 배열을 의미합니다. 3차원 배열에서 shape을 구하면 (층, 행, 열) 총 3가지 정보를 얻을 수 있습니다.

 

dtype

dtype은 배열의 데이터 타입을 의미합니다. 어떠한 배열의 데이터 타입을 확인할 때 사용하거나, 배열의 데이터 타입을 직접 지정해 줄 때 사용할 수 있습니다. 기본적으로 넘파이의 원소들은 모두 같은 데이터 타입을 가지고 있습니다. numpy.int32, numpy.int16, numpy.float64등이 있습니다.

arr = np.array([1.1, 2.2, 3.3])
print(arr.dtype)

>> 
float64

arr = np.array([1.1, 2.2, 3.3], dtype=int)
print(arr)

>>
[1 2 3]

print(arr.dtype)

>>
int32

dtype으로 해당 배열의 데이터 타입을 확인하고(float64), 해당 배열의 데이터 타입을 int로 바꾸어 줍니다. dtype=int를 적용하여 배열을 출력해 보면 float였던 데이터 타입이 정수로 바뀐 것을 확인할 수 있습니다.

 

 

arr = np.array([1, 2, 3, 0], dtype=bool)
print(arr)

>>
[True True True False]

dtype을 이용하면 배열의 타입을 int, float는 물론 bool과 string으로도 바꾸어 줄 수 있습니다. 하지만 문자열이 들어있는 배열에서의 데이터 타입을 int로 바꾸는 등의 형변환은 할 수 없습니다.

댓글