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

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