Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

NumPy can_cast() 메서드 – 캐스팅 규칙에 따른 스칼라와 데이터 타입 변환 가능 여부 확인하기

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() 메서드는 데이터 손실이나 오버플로우 없이 안전하게 형 변환을 수행할 수 있는지 사전에 검증할 때 유용하게 활용됩니다.