Oplossing: alleen arrays van grootte 1 kunnen worden geconverteerd naar scalairen in python
Een fout die u kunt tegenkomen bij het gebruik van Python is:
TypeError : only size-1 arrays can be converted to Python scalars
Deze fout treedt het vaakst op wanneer u np.int() probeert te gebruiken om een NumPy-array met float-waarden te converteren naar een array met gehele waarden.
Deze functie accepteert echter slechts één waarde in plaats van een reeks waarden.
In plaats daarvan moet u x.astype(int) gebruiken om een NumPy-array met float-waarden te converteren naar een array met gehele waarden, omdat deze functie een array kan accepteren.
Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt corrigeren.
Hoe de fout te reproduceren
Stel dat we de volgende NumPy-array met float-waarden maken:
import numpy as np #create NumPy array of float values x = np. array ([3, 4.5, 6, 7.7, 9.2, 10, 12, 14.1, 15])
Stel nu dat we deze reeks float-waarden proberen om te zetten in een reeks gehele waarden:
#attempt to convert array to integer values
n.p. int (x)
TypeError : only size-1 arrays can be converted to Python scalars
We ontvangen een TypeError omdat de functie np.int() alleen enkele waarden accepteert, geen reeks waarden.
Hoe u de fout kunt oplossen
Om een NumPy-array met float-waarden naar gehele waarden te converteren, kunnen we de volgende code gebruiken:
#convert array of float values to integer values
x. astype (int)
array([ 3, 4, 6, 7, 9, 10, 12, 14, 15])
Merk op dat de array met waarden is geconverteerd naar gehele getallen en dat we geen fouten ontvangen omdat de functie astype() een array met waarden kan verwerken.
Opmerking : u kunt de volledige documentatie voor de functie astype() hier vinden.
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