NumPy 배열의 데이터 타입 이해하기
NumPy는 Python에서 과학 계산을 수행할 때 가장 널리 사용되는 라이브러리 중 하나입니다. 특히, 다차원 배열 객체인 ndarray
를 제공하여 대규모 데이터를 효율적으로 처리할 수 있습니다. 오늘은 NumPy 배열의 핵심 개념 중 하나인 데이터 타입(data type)에 대해 알아보겠습니다. 이 글에서는 데이터 타입의 개념, 주요 데이터 타입의 종류, 그리고 데이터 타입을 다루는 방법에 대해 설명합니다.
데이터 타입이란?
NumPy 배열의 데이터 타입은 배열에 저장되는 요소의 종류를 정의합니다. NumPy는 고성능 계산을 위해 배열 내의 모든 요소가 동일한 데이터 타입을 가지도록 설계되었습니다. 데이터 타입은 메모리에서 데이터를 저장하는 방식을 정의하며, 이는 효율적인 연산을 가능하게 합니다.
NumPy의 데이터 타입은 dtype(data type) 객체로 표현됩니다. 각 dtype 객체는 데이터 타입에 대한 정보를 포함하고 있으며, 배열 생성 시 명시적으로 설정하거나 기본값으로 자동 지정됩니다.
주요 데이터 타입의 종류
NumPy는 다양한 데이터 타입을 지원합니다. 여기에는 정수, 부동소수점, 복소수, 문자열, 그리고 사용자 정의 타입 등이 포함됩니다. 주요 데이터 타입은 다음과 같습니다:
- 정수형:
int8
,int16
,int32
,int64
- 예: -128에서 127 (
int8
)
- 예: -128에서 127 (
- 부호 없는 정수형:
uint8
,uint16
,uint32
,uint64
- 예: 0에서 255 (
uint8
)
- 예: 0에서 255 (
- 부동소수점형:
float16
,float32
,float64
- 예: 단정도(
float32
), 배정도(float64
)
- 예: 단정도(
- 복소수형:
complex64
,complex128
- 예: 3+5j
- 문자열형:
string_
,unicode_
- 예: 'hello' (UTF-8 인코딩)
- 불리언형:
bool_
- 예:
True
,False
- 예:
dtype 확인하기
NumPy 배열의 dtype은 dtype
속성을 통해 확인할 수 있습니다.
import numpy as np
# 정수형 배열 생성
arr = np.array([1, 2, 3], dtype=np.int32)
print(arr.dtype) # 출력: int32
# 부동소수점 배열 생성
arr_float = np.array([1.0, 2.0, 3.0])
print(arr_float.dtype) # 출력: float64
데이터 타입 설정하기
배열을 생성할 때 데이터 타입을 명시적으로 지정할 수 있습니다. dtype
매개변수를 사용하면 됩니다.
# 정수형 배열 생성
arr_int = np.array([1, 2, 3], dtype=np.int8)
print(arr_int) # 출력: [1 2 3]
print(arr_int.dtype) # 출력: int8
# 부동소수점형 배열 생성
arr_float = np.array([1.5, 2.5, 3.5], dtype=np.float32)
print(arr_float) # 출력: [1.5 2.5 3.5]
print(arr_float.dtype) # 출력: float32
데이터 타입 변환하기
이미 생성된 배열의 데이터 타입을 변경하려면 astype
메서드를 사용합니다. 이 메서드는 기존 배열의 데이터 타입을 변경한 새로운 배열을 반환합니다.
# 배열 생성
arr = np.array([1, 2, 3], dtype=np.int32)
# 데이터 타입 변환
arr_float = arr.astype(np.float64)
print(arr_float) # 출력: [1. 2. 3.]
print(arr_float.dtype) # 출력: float64
# 정수형으로 변환
arr_int = arr_float.astype(np.int32)
print(arr_int) # 출력: [1 2 3]
print(arr_int.dtype) # 출력: int32
dtype 객체의 구성 요소
NumPy의 dtype
객체는 데이터 타입에 대한 다양한 속성을 제공합니다. 주요 속성은 다음과 같습니다:
type
: 데이터 타입의 이름itemsize
: 각 요소의 크기(바이트)name
: 데이터 타입의 문자열 표현
예제를 통해 살펴보겠습니다:
# dtype 객체의 속성 확인
arr = np.array([1, 2, 3], dtype=np.int32)
dtype = arr.dtype
print(dtype.type) # 출력: <class 'numpy.int32'>
print(dtype.itemsize) # 출력: 4
print(dtype.name) # 출력: int32
사용자 정의 데이터 타입
NumPy는 복합 데이터 타입을 정의할 수 있는 기능도 제공합니다. 이 기능을 사용하면 구조체와 같은 복잡한 데이터 구조를 다룰 수 있습니다.
# 사용자 정의 데이터 타입 생성
custom_dtype = np.dtype([('name', 'U10'), ('age', 'i4'), ('weight', 'f4')])
# 배열 생성
data = np.array([('Alice', 25, 55.0), ('Bob', 30, 70.5)], dtype=custom_dtype)
print(data)
# 출력:
# [('Alice', 25, 55. ) ('Bob', 30, 70.5)]
마무리
NumPy 배열의 데이터 타입은 배열의 효율적인 저장과 연산을 가능하게 하는 중요한 요소입니다. 다양한 데이터 타입을 이해하고 적절히 활용하면, 더욱 효율적이고 강력한 코드를 작성할 수 있습니다. 오늘 배운 내용을 바탕으로 다양한 데이터 타입을 실험해 보세요!
'Python > NumPy' 카테고리의 다른 글
NumPy 배열의 인덱싱 이해하기 (0) | 2025.09.28 |
---|---|
NumPy 배열의 속성 확인하기 (0) | 2025.09.26 |
NumPy 배열 생성 방법 (0) | 2025.09.25 |
NumPy가 제공하는 주요 기능 소개 (0) | 2025.09.24 |
NumPy란 무엇인가? (0) | 2025.09.23 |