Oplossing: alleen scalaire arrays met gehele getallen kunnen worden geconverteerd naar scalaire index


Een fout die u kunt tegenkomen bij het gebruik van Python is:

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

Deze fout treedt meestal op om een van de volgende twee redenen:

1. U hebt geprobeerd array-indexering op een lijst uit te voeren.

2. U hebt geprobeerd twee matrices aan elkaar te koppelen met een onjuiste syntaxis.

In de volgende voorbeelden ziet u hoe u deze fouten in beide scenario’s kunt voorkomen.

Voorbeeld 1: U hebt geprobeerd array-indexering uit te voeren op een lijst.

Stel dat we de volgende code proberen te gebruiken om een lijndiagram in matplotlib te maken met een legenda en labels:

 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

We ontvangen een foutmelding omdat we hebben geprobeerd array-indexering op een lijst te gebruiken.

Om deze fout te voorkomen, moeten we de lijst eerst als volgt naar een NumPy-array converteren met np.array() :

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

Deze keer kunnen we zonder fouten willekeurig twee waarden uit de lijst selecteren, aangezien we de lijst eerst naar een NumPy-array hebben geconverteerd.

Voorbeeld 2: U hebt geprobeerd twee matrices aan elkaar te koppelen met een onjuiste syntaxis.

Stel dat we de volgende code proberen te gebruiken om twee NumPy-matrices aan elkaar te koppelen:

 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

We ontvangen een foutmelding omdat we er niet in zijn geslaagd de matrices als een tupel aan te bieden voor de functie concatenate() .

Om deze fout te voorkomen, moet u dubbele haakjes gebruiken om de matrices als volgt in tupelvorm aan de functie concatenate() te leveren:

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

Deze keer slagen we erin om de twee matrices zonder fouten aan elkaar te koppelen.

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