Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

NumPy 배열의 데이터 타입(dtype) 확인 및 변경 방법

NumPy 배열은 파이썬의 기본 데이터 타입 외에도 매우 다양한 데이터 타입을 지원합니다. 배열을 생성한 이후에도 필요에 따라 배열 요소의 데이터 타입을 얼마든지 변경할 수 있습니다. 이를 위해 사용되는 대표적인 두 가지 방법이 바로 array.dtypearray.astype입니다.

1. array.dtype — 현재 데이터 타입 확인하기

dtype 속성은 배열에 저장된 요소들의 현재 데이터 타입을 알려줍니다. 아래 예제에서는 배열을 선언한 뒤 해당 배열의 데이터 타입을 출력해 보겠습니다.

예제 코드

import numpy as np
# NumPy 배열 생성
a = np.array([21.23, 13.1, 52.1, 8, 255])
# 배열 출력
print(a)
# 배열의 데이터 타입 출력
print(a.dtype)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

[ 21.23 13.1 52.1 8. 255. ]
float64

정수와 실수가 섞여 있는 리스트로 배열을 생성하면, NumPy는 모든 요소를 표현할 수 있는 float64 타입으로 자동 변환합니다.

2. array.astype — 원하는 데이터 타입으로 변환하기

astype 메서드는 기존 배열을 지정한 데이터 타입의 새로운 배열로 변환해 줍니다. 아래 예제에서는 하나의 배열을 int32, 문자열(str), 복소수(complex64) 등 다양한 데이터 타입으로 변환해 봅니다.

예제 코드

import numpy as np
# NumPy 배열 생성
a = np.array([21.23, 13.1, 52.1, 8, 255])
print(a)
print(a.dtype)

# int32 타입으로 변환
a_int = a.astype('int32')
print(a_int)
print(a_int.dtype)

# 문자열(str) 타입으로 변환
a_str = a.astype('str')
print(a_str)
print(a_str.dtype)

# complex64(복소수) 타입으로 변환
a_cmplx = a.astype('complex64')
print(a_cmplx)
print(a_cmplx.dtype)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

[ 21.23 13.1 52.1 8. 255. ]
float64
[ 21 13 52 8 255]
int32
['21.23' '13.1' '52.1' '8.0' '255.0']
<U32
[ 21.23+0.j 13.1 +0.j 52.1 +0.j 8. +0.j 255. +0.j]
complex64

참고 사항

astype을 사용할 때는 몇 가지 주의할 점이 있습니다.

① 원본 배열은 그대로 유지됩니다. astype은 항상 새로운 배열을 반환하므로, 원본 배열의 데이터 타입은 변경되지 않습니다.

② 실수 → 정수 변환 시 소수점 이하는 잘립니다. 위 예제에서 21.23이 21로 변환된 것처럼 반올림이 아니라 버림(truncation) 처리되므로 주의해야 합니다.

③ 문자열 변환 시 길이가 자동 결정됩니다. 출력 결과의 <U32는 각 문자열 요소가 최대 32자 유니코드로 저장되었음을 의미합니다.

이처럼 dtype으로 현재 타입을 확인하고, astype으로 원하는 타입으로 자유롭게 변환하면 메모리 사용량 최적화나 연산 성능 개선 등 다양한 상황에서 유용하게 활용할 수 있습니다.