Oplossing: 'numpy.float64'-object is niet itereerbaar
Een fout die u kunt tegenkomen bij het gebruik van NumPy is:
TypeError : 'numpy.float64' object is not iterable
Deze fout treedt op wanneer u iteratief een iteratieve bewerking probeert uit te voeren op een float-waarde in NumPy, wat niet mogelijk is.
Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt oplossen.
Hoe de fout te reproduceren
Stel dat we de volgende NumPy-array hebben:
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]
Stel nu dat we proberen de som van elke waarde in de array af te drukken:
#attempt to print the sum of every value
for i in data:
print (sum(i))
TypeError : 'numpy.float64' object is not iterable
Er is een fout opgetreden omdat we hebben geprobeerd om iteratief (de som van de waarden te nemen) voor elke afzonderlijke zwevende waarde in de array.
Hoe u de fout kunt oplossen
We kunnen deze fout op twee manieren vermijden:
1. Voer een niet-iteratieve bewerking uit op elke waarde in de array.
We kunnen bijvoorbeeld elke waarde in de array afdrukken:
#print every value in array
for i in data:
print (i)
1.3
1.5
1.6
1.9
2.2
2.5
We ontvangen geen foutmelding omdat we niet hebben geprobeerd elke waarde te herhalen.
2. Voer een iteratieve bewerking uit op een multidimensionale array.
We kunnen ook een fout vermijden door een iteratieve bewerking uit te voeren op een multidimensionale array:
#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
We krijgen geen foutmelding omdat het logisch was om de functie sum() te gebruiken op een multidimensionale array.
Dit is in het bijzonder hoe NumPy de somwaarden heeft berekend:
- 1,3 + 1,5 = 2,8
- 1,6 + 1,9 = 3,5
- 2,2 + 2,5 = 4,7
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in Python kunt oplossen:
Hoe KeyError in Panda’s te repareren
Oplossing: ValueError: Kan float NaN niet naar int converteren
Oplossing: ValueError: Operanden konden niet worden uitgezonden met vormen