4.3.3 다차원 배열의 자료형 (dtype)

어떤 데이터 타입으로 배열을 강제로 통일시키는지 실험해 봅시다.

오류 방지

다음과 같이 숫자와 문자열을 억지로 표 배열 안에 욱여넣으면, numpy는 내부 오류를 면하기 위해 가장 스펙트럼이 넓은 자료형인 문자열(String) 형태로 모든 숫자를 일괄 캐스팅(형 변환)해 버립니다.

캐스팅이란?

데이터 타입 통일 세관원

‘Numpy 공항’의 엄격한 마법사 세관원 로봇이 화를 내며 “오직 단 하나의 데이터 타입만 허용한다!”라고 소리칩니다. 사과, 숫자, 글자들이 섞인 무리들이 억지로 똑같은 유니폼(문자열 String복장)으로 강제 변신당한 채 울면서 메모리 기차에 탑승하려는 코믹한 묘사

예제

# 문자와 숫자가 섞인 배열 선언
mix_vec = np.array(["사과", 12, "수박", 8])
print("결과:", mix_vec) 
# ['사과' '12' '수박' '8'] -> 12와 8이 계산 불가능한 따옴표 문자로 강제 변환됨

따라서 배열 안에 정확히 어떤 타입의 데이터가 계산될 것인지 지정해주는 것이 매우 중요합니다.

기본 수치형 자료형

numpy는 표준 파이썬보다 훨씬 세분화된 메모리 최적화용 기본 수치형 자료형을 제공합니다.

자료형 설명
bool 부울 (참(True) 또는 거짓(False))
int8, int16, int32, int64 8비트, 16비트, 32비트, 64비트 정수형 데이터
uint8, uint16, uint32, uint64 음수가 배제된 부호 없는(Unsigned) 양의 정수 전용
float16, float32, float64 16비트, 32비트, 64비트 부동 소수점(실수) 척도 데이터
complex64, complex128 주로 공학 분야에서 허수부를 표현하는 데 쓰이는 복소수

팁: 자료형 뒤에 붙은 숫자 16, 32, 64 등은 데이터를 운영체제 메모리에 저장할 때 사용하는 비트(Bit) 용의 크기를 의미합니다. 숫자가 클수록 소수점 아래 무한에 가까운 방대하고 정밀한 숫자를 표현할 수 있으나, 그만큼 램(RAM) 용량을 많이 소비하게 됩니다.

서브목차