해결 방법: '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: 피연산자를 모양과 함께 브로드캐스트할 수 없습니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다