Як виправити: об’єкт 'numpy.float64' не можна повторювати
Під час використання NumPy може виникнути така помилка:
TypeError : 'numpy.float64' object is not iterable
Ця помилка виникає, коли ви намагаєтеся виконати ітераційну операцію над значенням із плаваючою точкою в NumPy, що неможливо.
У наступному прикладі показано, як вирішити цю помилку на практиці.
Як відтворити помилку
Припустимо, у нас є такий масив NumPy:
import numpy as np #define array of data data = np. array ([1.3, 1.5, 1.6, 1.9, 2.2, 2.5]) #display array of data print (data) [1.3 1.5 1.6 1.9 2.2 2.5]
Тепер припустімо, що ми спробуємо надрукувати суму кожного значення в масиві:
#attempt to print the sum of every value
for i in data:
print (sum(i))
TypeError : 'numpy.float64' object is not iterable
Ми отримали помилку, оскільки ми намагалися виконати ітерацію (взяти суму значень) для кожного окремого значення з плаваючою точкою в масиві.
Як виправити помилку
Ми можемо уникнути цієї помилки двома способами:
1. Виконайте безітераційну операцію над кожним значенням у масиві.
Наприклад, ми могли б надрукувати кожне значення в масиві:
#print every value in array
for i in data:
print (i)
1.3
1.5
1.6
1.9
2.2
2.5
Ми не отримуємо повідомлення про помилку, оскільки ми не намагалися повторити кожне значення.
2. Виконати ітераційну операцію над багатовимірним масивом.
Ми також можемо уникнути помилки, виконавши ітеративну операцію над багатовимірним масивом:
#create multi-dimensional array
data2 = np. array ([[1.3, 1.5], [1.6, 1.9], [2.2, 2.5]])
#print sum of each element in array
for i in data2:
print (sum(i))
2.8
3.5
4.7
Ми не отримуємо повідомлення про помилку, тому що мало сенс використовувати функцію sum() для багатовимірного масиву.
Зокрема, ось як NumPy обчислює сумарні значення:
- 1,3 + 1,5 = 2,8
- 1,6 + 1,9 = 3,5
- 2,2 + 2,5 = 4,7
Додаткові ресурси
У наступних посібниках пояснюється, як виправити інші типові помилки в Python:
Як виправити KeyError у Pandas
Як виправити: ValueError: неможливо перетворити float NaN на int
Як виправити: ValueError: операнди не можна транслювати з фігурами