Jak naprawić: tylko tablice o rozmiarze 1 można konwertować na skalary pythona
Błąd, który możesz napotkać podczas korzystania z Pythona, to:
TypeError : only size-1 arrays can be converted to Python scalars
Ten błąd pojawia się najczęściej przy próbie użycia np.int() do konwersji tablicy NumPy zawierającej wartości zmiennoprzecinkowe na tablicę wartości całkowitych.
Jednak ta funkcja akceptuje tylko pojedynczą wartość zamiast tablicy wartości.
Zamiast tego powinieneś użyć x.astype(int) do konwersji tablicy NumPy wartości zmiennoprzecinkowych na tablicę wartości całkowitych, ponieważ ta funkcja jest w stanie zaakceptować tablicę.
Poniższy przykład pokazuje, jak w praktyce skorygować ten błąd.
Jak odtworzyć błąd
Załóżmy, że tworzymy następującą tablicę NumPy wartości zmiennoprzecinkowych:
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])
Załóżmy teraz, że spróbujemy przekonwertować tę tablicę wartości zmiennoprzecinkowych na tablicę wartości całkowitych:
#attempt to convert array to integer values
n.p. int (x)
TypeError : only size-1 arrays can be converted to Python scalars
Otrzymujemy błąd TypeError , ponieważ funkcja np.int() akceptuje tylko pojedyncze wartości, a nie tablicę wartości.
Jak naprawić błąd
W celu konwersji tablicy NumPy zawierającej wartości zmiennoprzecinkowe na wartości całkowite możemy skorzystać z następującego kodu:
#convert array of float values to integer values
x. astype (int)
array([ 3, 4, 6, 7, 9, 10, 12, 14, 15])
Należy pamiętać, że tablica wartości została przekonwertowana na liczby całkowite i nie otrzymujemy żadnych błędów, ponieważ funkcja astype() jest w stanie obsłużyć tablicę wartości.
Uwaga : Pełną dokumentację funkcji astype() można znaleźć tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w Pythonie:
Jak naprawić błąd KeyError w Pandach
Jak naprawić: ValueError: Nie można przekonwertować float NaN na int
Jak naprawić: Błąd wartości: Nie można rozgłaszać argumentów z kształtami