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

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

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()는 데이터 손실 위험 없이 안전한 타입 변환인지 사전에 검증할 때 유용하게 활용할 수 있습니다.