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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert