안녕하세요 콥스랩(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로 바꾸는 등의 형변환은 할 수 없습니다.
'Numpy' 카테고리의 다른 글
Numpy 기초 (2) - 배열 인덱싱 및 슬라이싱, 다양한 함수들 (0) | 2023.01.04 |
---|---|
Numpy 기초 (1) - 배열 정의 및 생성, 배열 shape, 배열 연산 (0) | 2022.12.26 |
댓글