Jak naprawić: na indeks skalarny można konwertować tylko tablice skalarne w postaci liczb całkowitych


Błąd, który możesz napotkać podczas korzystania z Pythona, to:

 TypeError : only integer scalar arrays can be converted to a scalar index

Ten błąd zwykle występuje z jednego z dwóch powodów:

1. Próbowano przeprowadzić indeksowanie tablicy na liście.

2. Próbowano połączyć dwie macierze przy użyciu nieprawidłowej składni.

Poniższe przykłady pokazują, jak uniknąć tych błędów w obu scenariuszach.

Przykład 1: Próbowano przeprowadzić indeksowanie tablicy na liście.

Załóżmy, że próbujemy użyć poniższego kodu do utworzenia wykresu liniowego w Matplotlib z legendą i etykietami:

 import numpy as np

#create a list of values
data = [3, 5, 5, 7, 8, 10, 12, 14]

#choose 3 random values from list
random_values = np. random . choice (range(len(data)), size= 2 )

#attempt to use indexing to access elements in list
random_vals = data[random_values. astype (int)]

#view results
random_vals

TypeError : only integer scalar arrays can be converted to a scalar index

Otrzymujemy błąd, ponieważ próbowaliśmy użyć indeksowania tablicy na liście.

Aby uniknąć tego błędu, musimy najpierw przekonwertować listę na tablicę NumPy za pomocą np.array() w następujący sposób:

 import numpy as np

#create a list of values
data = [3, 5, 5, 7, 8, 10, 12, 14]

#choose 3 random values from list
random_values = np. random . choice (range(len(data)), size= 2 )

#attempt to use indexing to access elements in list
random_vals = np. array (data)[random_values. astype (int)]

#view results
random_vals

array([5, 7])

Tym razem możemy losowo wybrać dwie wartości z listy bez żadnego błędu, odkąd po raz pierwszy przekonwertowaliśmy listę na tablicę NumPy.

Przykład 2: Próbowano połączyć dwie macierze przy użyciu nieprawidłowej składni.

Załóżmy, że spróbujemy użyć poniższego kodu do połączenia dwóch macierzy NumPy:

 import numpy as np

#create twoNumPy matrices
mat1 = np. matrix ([[3, 5], [5, 7]])
mat2 = np. matrix ([[2, 4], [1, 8]])

#attempt to concatenate both matrices
n.p. concatenate (mat1, mat2)

TypeError : only integer scalar arrays can be converted to a scalar index

Otrzymujemy błąd, ponieważ nie dostarczyliśmy macierzy jako krotki do funkcji concatenate() .

Aby uniknąć tego błędu, należy użyć podwójnych nawiasów, aby dostarczyć macierze w formie krotki do funkcji concatenate() w następujący sposób:

 import numpy as np

#create twoNumPy matrices
mat1 = np. matrix ([[3, 5], [5, 7]])
mat2 = np. matrix ([[2, 4], [1, 8]])

#attempt to concatenate both matrices
n.p. concatenate ((mat1, mat2))

matrix([[3, 5],
        [5, 7],
        [2, 4],
        [1, 8]])

Tym razem udaje nam się bezbłędnie połączyć obie macierze.

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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *