Как исправить: объект 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 в int.
Как исправить: ValueError: операнды не могут быть переданы с помощью фигур.