Como corrigir: o objeto ‘numpy.float64’ não pode ser interpretado como um int


Um erro que você pode encontrar ao usar o NumPy é:

 TypeError : 'numpy.float64' object cannot be interpreted as an integer

Este erro ocorre quando você fornece um float para uma função que espera um número inteiro.

O exemplo a seguir mostra como corrigir esse erro na prática.

Como reproduzir o erro

Suponha que tentemos usar o seguinte loop for para imprimir números diferentes em um array NumPy:

 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

Recebemos um erro porque a função range() espera um número inteiro, mas os valores no array NumPy são flutuantes.

Como corrigir o erro

Existem duas maneiras de corrigir esse erro rapidamente:

Método 1: use a função int()

Uma maneira de corrigir esse erro é simplesmente encerrar a chamada com int() da seguinte maneira:

 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)

Usando a função int() , convertemos cada valor flutuante no array NumPy em um número inteiro para evitar o TypeError que encontramos anteriormente.

Método 2: use a função .astype(int)

Outra maneira de corrigir esse erro é primeiro converter os valores do array NumPy em números inteiros:

 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)

Ao usar este método evitamos o TypeError novamente.

Recursos adicionais

Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:

Como corrigir KeyError em Pandas
Como corrigir: ValueError: não é possível converter float NaN em int
Como corrigir: ValueError: os operandos não puderam ser transmitidos com formas

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *