Как исправить: объект numpy.float64 не может интерпретироваться как int


Ошибка, с которой вы можете столкнуться при использовании 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 в int.
Как исправить: ValueError: операнды не могут быть переданы с помощью фигур.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *