numpy.promote_types() 함수는 입력으로 주어진 두 데이터 타입(type1, type2)을 모두 안전하게 캐스팅(형변환)할 수 있는, 가장 작은 크기와 가장 낮은 스칼라 종류를 가진 데이터 타입을 반환합니다. 이렇게 반환된 데이터 타입을 '승격된(promoted) 타입'이라고 부르며, 결과값은 항상 네이티브(native) 바이트 순서를 따릅니다.
첫 번째 매개변수에는 첫 번째 데이터 타입을, 두 번째 매개변수에는 두 번째 데이터 타입을 전달합니다.
사용 단계
먼저 필요한 라이브러리를 임포트합니다 −
import numpy as np
NumPy에서 promote_types() 함수를 사용해 다양한 타입 조합을 확인해 보겠습니다 −
print("결과...", np.promote_types('f4', 'f8'))
print("결과...", np.promote_types('i8', 'f4'))
print("결과...", np.promote_types('>i8', '<c8'))
print("결과...", np.promote_types('i4', 'S8'))
print("결과...", np.promote_types(np.int32, np.int64))
print("결과...", np.promote_types(np.float64, complex))
print("결과...", np.promote_types(complex, float))예제 코드
import numpy as np
# numpy.promote_types() 함수는 두 데이터 타입을 모두 안전하게 캐스팅할 수 있는,
# 가장 작은 크기와 가장 낮은 스칼라 종류의 데이터 타입을 반환합니다.
print("NumPy promote_types() 함수 테스트
")
print("결과...", np.promote_types('f4', 'f8'))
print("결과...", np.promote_types('i8', 'f4'))
print("결과...", np.promote_types('>i8', '<c8'))
print("결과...", np.promote_types('i4', 'S8'))
print("결과...", np.promote_types(np.int32, np.int64))
print("결과...", np.promote_types(np.float64, complex))
print("결과...", np.promote_types(complex, float))실행 결과
NumPy promote_types() 함수 테스트 결과... float64 결과... float64 결과... complex128 결과... |S11 결과... int64 결과... complex128 결과... complex128
결과 해석
각 호출 결과를 살펴보면 다음과 같습니다.
'f4'(32비트 실수)와'f8'(64비트 실수)을 결합하면 더 정밀한float64가 됩니다.'i8'(정수)와'f4'(실수)를 결합하면 정수와 실수를 모두 담을 수 있는float64로 승격됩니다.- 빅 엔디안
'>i8'과 리틀 엔디안 복소수'<c8'을 결합하면complex128이 되며, 결과는 항상 네이티브 바이트 순서(=)로 반환됩니다. 'i4'(정수)와'S8'(바이트 문자열)을 결합하면 길이가 늘어난|S11이 반환됩니다.np.float64와 Python 내장complex, 또는complex와float를 결합하면 모두complex128로 승격됩니다.
이처럼 promote_types() 함수는 서로 다른 데이터 타입 간 연산 시 발생할 수 있는 형변환 문제를 사전에 파악하는 데 유용하게 활용됩니다.