numpy.can_cast() 메서드는 지정된 캐스팅 규칙에 따라 스칼라 값과 데이터 타입 간의 형 변환이 가능한 경우 True를 반환합니다.
이 메서드의 매개변수는 다음과 같습니다.
- 첫 번째 매개변수: 캐스팅의 원본이 되는 스칼라 값, 데이터 타입 또는 배열
- 두 번째 매개변수: 캐스팅 대상이 되는 데이터 타입
단계별 진행 과정
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
can_cast() 메서드를 사용하여 캐스팅 규칙에 따라 스칼라와 데이터 타입 간의 변환이 가능한지 확인합니다.
print("Checking with can_cast() method in Numpy\n")
print("Result...",np.can_cast(20, 'i1'))
print("Result...",np.can_cast(280, 'i1'))
print("Result...",np.can_cast(80, 'u1'))
print("Result...",np.can_cast(300.7, np.float32))
print("Result...",np.can_cast(120.6, np.float64))
print("Result...",np.can_cast(7.2e100, np.float32))
print("Result...",np.can_cast(6.5e100, np.float64))전체 예제 코드
import numpy as np
# numpy.can_cast() 메서드는 캐스팅 규칙에 따라
# 스칼라와 데이터 타입 간의 형 변환이 가능하면 True를 반환합니다.
# 첫 번째 매개변수: 캐스팅 원본(스칼라, 데이터 타입 또는 배열)
# 두 번째 매개변수: 캐스팅 대상 데이터 타입
print("Checking with can_cast() method in Numpy\n")
print("Result...",np.can_cast(20, 'i1'))
print("Result...",np.can_cast(280, 'i1'))
print("Result...",np.can_cast(80, 'u1'))
print("Result...",np.can_cast(300.7, np.float32))
print("Result...",np.can_cast(120.6, np.float64))
print("Result...",np.can_cast(7.2e100, np.float32))
print("Result...",np.can_cast(6.5e100, np.float64))실행 결과
Checking with can_cast() method in Numpy Result... True Result... False Result... True Result... True Result... True Result... False Result... True
결과 해석
출력 결과를 살펴보면 다음과 같은 이유로 True/False가 결정됩니다.
- 20 → i1(int8): int8의 표현 범위는 -128 ~ 127이므로 20은 범위 내에 있어 True
- 280 → i1(int8): 280은 int8의 최대값 127을 초과하므로 False
- 80 → u1(uint8): uint8의 표현 범위는 0 ~ 255이므로 80은 범위 내에 있어 True
- 300.7 → float32 / 120.6 → float64: 부동소수점 타입으로의 변환이 가능하여 True
- 7.2e100 → float32: float32의 최대 표현 범위(약 3.4e38)를 초과하므로 False
- 6.5e100 → float64: float64의 최대 표현 범위(약 1.8e308) 이내이므로 True
이처럼 can_cast() 메서드는 데이터 손실이나 오버플로우 없이 안전하게 형 변환을 수행할 수 있는지 사전에 검증할 때 유용하게 활용됩니다.