첫 번째 인수의 데이터 타입이 두 번째 인수의 하위 클래스(subclass)인지 확인하려면 Python NumPy의 numpy.issubsctype() 메서드를 사용하면 됩니다. 이때 첫 번째 인수와 두 번째 인수는 모두 데이터 타입(dtype)입니다.
사용 단계
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
NumPy의 issubsctype() 메서드를 호출하여 첫 번째 인수가 두 번째 인수의 하위 클래스인지 확인합니다.
print("Result...",np.issubsctype(np.float16, np.float32))
print("Result...",np.issubsctype(np.int32, np.signedinteger))
print("Result...",np.issubsctype('i4', np.signedinteger))
print("Result...",np.issubsctype('S8', str))
print("Result...",np.issubsctype(np.array([45, 89]), int))
print("Result...",np.issubsctype(np.array([5., 25., 40.]), float))예제 코드
import numpy as np
# 첫 번째 인수의 데이터 타입이 두 번째 인수의 하위 클래스인지 확인하려면
# Python NumPy의 numpy.issubsctype() 메서드를 사용합니다.
# 첫 번째와 두 번째 인수는 모두 데이터 타입입니다.
print("NumPy의 issubsctype() 메서드 사용\n")
# 첫 번째 인수가 두 번째 인수의 하위 클래스인지 확인
print("Result...",np.issubsctype(np.float16, np.float32))
print("Result...",np.issubsctype(np.int32, np.signedinteger))
print("Result...",np.issubsctype('i4', np.signedinteger))
print("Result...",np.issubsctype('S8', str))
print("Result...",np.issubsctype(np.array([45, 89]), int))
print("Result...",np.issubsctype(np.array([5., 25., 40.]), float))출력 결과
NumPy의 issubsctype() 메서드 사용 Result... False Result... True Result... True Result... False Result... True Result... True
결과 해설
각 결과를 살펴보면 다음과 같습니다.
- np.float16 vs np.float32 → False: float16은 float32의 하위 클래스가 아닙니다. 두 타입은 서로 별개의 부동소수점 타입입니다.
- np.int32 vs np.signedinteger → True: int32는 부호 있는 정수(signedinteger) 범주에 속하는 구체적인 타입입니다.
- 'i4' vs np.signedinteger → True: 문자열 형태의 dtype 지정자 'i4'(4바이트 부호 있는 정수)도 올바르게 해석되어 True를 반환합니다.
- 'S8' vs str → False: 바이트 문자열 타입 'S8'은 파이썬의 str 타입과 하위 클래스 관계가 아닙니다.
- 정수 배열 vs int → True: [45, 89] 배열의 dtype(int64 등)은 int 계열에 속합니다.
- 실수 배열 vs float → True: [5., 25., 40.] 배열의 dtype(float64)은 float 계열에 속합니다.
참고: 최신 버전의 NumPy에서는 issubsctype()이 더 이상 권장되지 않으며(deprecated), 동일한 기능을 제공하는 np.issubdtype() 사용이 권장됩니다. 기존 코드를 유지 보수할 때는 이 점을 고려하세요.