해결 방법: 'numpy.float64' 개체를 int로 해석할 수 없습니다.
NumPy를 사용할 때 발생할 수 있는 오류는 다음과 같습니다.
TypeError : 'numpy.float64' object cannot be interpreted as an integer
이 오류는 정수를 기대하는 함수에 부동 소수점을 제공할 때 발생합니다.
다음 예에서는 실제로 이 오류를 수정하는 방법을 보여줍니다.
오류를 재현하는 방법
NumPy 배열에 다른 숫자를 인쇄하기 위해 다음 for 루프를 사용한다고 가정해 보겠습니다.
import numpy as np #define array of values data = np. array ([3.3, 4.2, 5.1, 7.7, 10.8, 11.4]) #use for loop to print out range of values at each index for i in range(len(data)): print (range(data[i])) TypeError : 'numpy.float64' object cannot be interpreted as an integer
range() 함수는 정수를 기대하지만 NumPy 배열의 값은 부동 소수점이므로 오류가 발생합니다.
오류를 수정하는 방법
이 오류를 신속하게 해결하는 방법에는 두 가지가 있습니다.
방법 1: int() 함수 사용
이 오류를 해결하는 한 가지 방법은 다음과 같이 호출을 int() 로 간단히 래핑하는 것입니다.
import numpy as np #define array of values data = np. array ([3.3, 4.2, 5.1, 7.7, 10.8, 11.4]) #use for loop to print out range of values at each index for i in range(len(data)): print (range(int(data[i]))) range(0, 3) range(0, 4) range(0, 5) range(0, 7) range(0, 10) range(0, 11)
int() 함수를 사용하여 이전에 발생한 TypeError를 방지하기 위해 NumPy 배열의 각 부동 소수점 값을 정수로 변환합니다.
방법 2: .astype(int) 함수 사용
이 오류를 해결하는 또 다른 방법은 먼저 NumPy 배열 값을 정수로 변환하는 것입니다.
import numpy as np #define array of values data = np. array ([3.3, 4.2, 5.1, 7.7, 10.8, 11.4]) #convert array of floats to array of integers data_int = data. astype (int) #use for loop to print out range of values at each index for i in range(len(data)): print (range(data[i])) range(0, 3) range(0, 4) range(0, 5) range(0, 7) range(0, 10) range(0, 11)
이 방법을 사용하면 TypeError를 다시 피할 수 있습니다.
추가 리소스
다음 튜토리얼에서는 Python의 다른 일반적인 오류를 수정하는 방법을 설명합니다.
Pandas에서 KeyError를 수정하는 방법
해결 방법: ValueError: float NaN을 int로 변환할 수 없습니다.
해결 방법: ValueError: 피연산자를 모양과 함께 브로드캐스트할 수 없습니다.