Python NumPy에서 numpy.issubdtype() 메서드를 사용하면 크기가 다른 float 데이터 타입들이 서로의 하위 타입(subtype)이 아닌지 손쉽게 확인할 수 있습니다. 이 메서드는 첫 번째 인자가 두 번째 인자의 하위 타입인지 여부를 불리언(True/False) 값으로 반환하며, 인자로는 dtype 또는 dtype으로 변환 가능한 객체를 전달합니다.
핵심 개념
NumPy는 float16(반정밀도), float32(단정밀도), float64(배정밀도)처럼 크기와 정밀도가 서로 다른 여러 부동소수점 타입을 제공합니다. 이들 타입은 메모리 크기와 표현 범위만 다를 뿐, 서로 간에 상속(하위 타입) 관계는 성립하지 않습니다. 따라서 서로 다른 크기의 float 타입을 상호 비교하면 항상 False가 반환됩니다.
구현 단계
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
이어서 issubdtype() 메서드를 사용해 크기가 다른 float 타입들을 서로 비교합니다.
print("Result...", np.issubdtype(np.float16, np.float32))
print("Result...", np.issubdtype(np.float32, np.float16))
print("Result...", np.issubdtype(np.float64, np.float32))
print("Result...", np.issubdtype(np.float32, np.float64))
print("Result...", np.issubdtype(np.float16, np.float64))
print("Result...", np.issubdtype(np.float64, np.float16))전체 예제 코드
import numpy as np
# 크기가 다른 float 데이터 타입이 서로의 하위 타입이 아닌지 확인하려면
# Python Numpy의 numpy.issubdtype() 메서드를 사용합니다.
# 인자로는 dtype 또는 dtype으로 변환 가능한 객체를 전달합니다.
print("Numpy의 issubdtype() 메서드 사용\n")
# 크기가 다른 float 타입들 비교
print("Result...", np.issubdtype(np.float16, np.float32))
print("Result...", np.issubdtype(np.float32, np.float16))
print("Result...", np.issubdtype(np.float64, np.float32))
print("Result...", np.issubdtype(np.float32, np.float64))
print("Result...", np.issubdtype(np.float16, np.float64))
print("Result...", np.issubdtype(np.float64, np.float16))
실행 결과
Numpy의 issubdtype() 메서드 사용
Result... False
Result... False
Result... False
Result... False
Result... False
Result... False
결과 해석
모든 비교 결과가 False로 출력됩니다. 이는 float16, float32, float64가 어느 방향으로 비교하더라도 서로의 하위 타입이 아님을 의미합니다. 즉, 정밀도가 낮은 타입이 높은 타입의 하위 타입이 되거나 그 반대가 되는 관계는 존재하지 않습니다.
참고로, 모든 부동소수점 타입이 공통 상위 카테고리인 np.floating의 하위 타입인지 확인하고 싶다면 np.issubdtype(np.float32, np.floating)처럼 작성할 수 있으며, 이 경우에는 True가 반환됩니다.