numpy.can_cast() 메서드는 캐스팅 규칙(casting rule)에 따라 데이터 타입 간의 형 변환이 가능한 경우 True를 반환하고, 불가능한 경우 False를 반환합니다.
이 메서드는 두 개의 매개변수를 받습니다.
- 첫 번째 매개변수: 변환의 원본이 되는 데이터 타입 또는 배열
- 두 번째 매개변수: 변환될 대상 데이터 타입
단계별 진행 방법
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
이제 can_cast() 메서드를 사용하여 캐스팅 규칙에 따라 데이터 타입 간 변환이 가능한지 확인해 보겠습니다.
print("Checking with can_cast() method in Numpy\n")
print("Result...",np.can_cast(np.int32, np.int64))
print("Result...",np.can_cast(np.float64, complex))
print("Result...",np.can_cast(complex, float))
print("Result...",np.can_cast('i8', 'f8'))
print("Result...",np.can_cast('i8', 'f4'))
print("Result...",np.can_cast('i4', 'S4'))전체 예제 코드
import numpy as np
# numpy.can_cast() 메서드는 캐스팅 규칙에 따라
# 데이터 타입 간의 형 변환이 가능하면 True를 반환합니다.
# 첫 번째 매개변수: 변환의 원본이 되는 데이터 타입 또는 배열
# 두 번째 매개변수: 변환될 대상 데이터 타입
print("Checking with can_cast() method in Numpy\n")
print("Result...",np.can_cast(np.int32, np.int64))
print("Result...",np.can_cast(np.float64, complex))
print("Result...",np.can_cast(complex, float))
print("Result...",np.can_cast('i8', 'f8'))
print("Result...",np.can_cast('i8', 'f4'))
print("Result...",np.can_cast('i4', 'S4'))실행 결과
Checking with can_cast() method in Numpy Result... True Result... True Result... False Result... True Result... False Result... False
결과 해석
각 결과가 True 또는 False로 나온 이유를 살펴보겠습니다.
- int32 → int64 : True – 더 큰 정수 타입으로 변환되므로 정보 손실 없이 안전하게 캐스팅됩니다.
- float64 → complex : True – 실수는 복소수로 손실 없이 변환될 수 있습니다.
- complex → float : False – 복소수에서 실수로 변환하면 허수 부분이 손실되므로 허용되지 않습니다.
- 'i8' → 'f8' : True – 64비트 정수는 64비트 실수로 변환될 수 있습니다.
- 'i8' → 'f4' : False – 64비트 정수를 32비트 실수로 변환하면 정밀도 손실이 발생할 수 있어 거부됩니다.
- 'i4' → 'S4' : False – 정수를 문자열 타입으로 직접 캐스팅하는 것은 허용되지 않습니다.
이처럼 numpy.can_cast()는 데이터 손실 위험 없이 안전한 타입 변환인지 사전에 검증할 때 유용하게 활용할 수 있습니다.