Come risolvere il problema: solo gli array di dimensione 1 possono essere convertiti in scalari python


Un errore che potresti riscontrare quando usi Python è:

 TypeError : only size-1 arrays can be converted to Python scalars

Questo errore si verifica più spesso quando si tenta di utilizzare np.int() per convertire un array NumPy di valori float in un array di valori interi.

Tuttavia, questa funzione accetta solo un singolo valore anziché una matrice di valori.

Invece, dovresti usare x.astype(int) per convertire un array NumPy di valori float in un array di valori interi, perché questa funzione è in grado di accettare un array.

L’esempio seguente mostra come correggere questo errore nella pratica.

Come riprodurre l’errore

Supponiamo di creare il seguente array NumPy di valori float:

 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])

Supponiamo ora di provare a convertire questo array di valori float in un array di valori interi:

 #attempt to convert array to integer values
n.p. int (x)

TypeError : only size-1 arrays can be converted to Python scalars 

Riceviamo un TypeError perché la funzione np.int() accetta solo valori singoli, non un array di valori.

Come correggere l’errore

Per convertire un array NumPy di valori float in valori interi, possiamo utilizzare il seguente codice:

 #convert array of float values to integer values
x. astype (int)

array([ 3, 4, 6, 7, 9, 10, 12, 14, 15])

Tieni presente che l’array di valori è stato convertito in numeri interi e non riceviamo alcun errore perché la funzione astype() è in grado di gestire un array di valori.

Nota : puoi trovare la documentazione completa per la funzione astype() qui .

Risorse addizionali

I seguenti tutorial spiegano come correggere altri errori comuni in Python:

Come correggere l’errore chiave nei Panda
Come risolvere il problema: ValueError: impossibile convertire float NaN in int
Come risolvere il problema: ValueError: non è stato possibile trasmettere gli operandi con le forme

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *