Как исправить: объект numpy.float64 не может быть интерпретирован как целое число


Одна ошибка, с которой вы можете столкнуться при использовании NumPy:

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

Эта ошибка возникает, когда вы предоставляете число с плавающей запятой какой-либо функции, которая ожидает целое число.

В следующем примере показано, как исправить эту ошибку на практике.

Как воспроизвести ошибку

Предположим, мы пытаемся использовать следующий цикл for для вывода различных чисел в массиве 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

Мы получаем ошибку, потому что функция 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() , мы преобразуем каждое значение с плавающей запятой в массиве NumPy в целое число, чтобы избежать ошибки TypeError , с которой мы столкнулись ранее.

Способ 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:

Как исправить KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в целое число
Как исправить: ValueError: операнды не могли транслироваться вместе с фигурами

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.