Як виправити: об’єкт «numpy.float64» не можна інтерпретувати як int


Під час використання NumPy може виникнути така помилка:

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

Ця помилка виникає, коли ви надаєте float функції, яка очікує ціле число.

У наступному прикладі показано, як виправити цю помилку на практиці.

Як відтворити помилку

Припустімо, ми спробуємо використати наступний цикл 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() , ми перетворюємо кожне значення float у масиві 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: неможливо перетворити float NaN на int
Як виправити: ValueError: операнди не можна транслювати з фігурами

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *