Problembehebung: nur ganzzahlige skalar-arrays können in skalarindizes konvertiert werden
Ein Fehler, der bei der Verwendung von Python auftreten kann, ist:
TypeError : only integer scalar arrays can be converted to a scalar index
Dieser Fehler tritt normalerweise aus einem von zwei Gründen auf:
1. Sie haben versucht, eine Array-Indizierung für eine Liste durchzuführen.
2. Sie haben versucht, zwei Matrizen mit falscher Syntax zu verketten.
Die folgenden Beispiele zeigen, wie diese Fehler in beiden Szenarien vermieden werden können.
Beispiel 1: Sie haben versucht, eine Array-Indizierung für eine Liste durchzuführen.
Angenommen, wir versuchen, den folgenden Code zu verwenden, um in matplotlib ein Liniendiagramm mit einer Legende und Beschriftungen zu erstellen:
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
Wir erhalten eine Fehlermeldung, weil wir versucht haben, die Array-Indizierung für eine Liste zu verwenden.
Um diesen Fehler zu vermeiden, müssen wir die Liste zunächst mit np.array() wie folgt in ein NumPy-Array konvertieren:
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])
Dieses Mal können wir ohne Fehler zufällig zwei Werte aus der Liste auswählen, da wir die Liste zuerst in ein NumPy-Array konvertiert haben.
Beispiel 2: Sie haben versucht, zwei Matrizen mit falscher Syntax zu verketten.
Angenommen, wir versuchen, den folgenden Code zu verwenden, um zwei NumPy-Matrizen zu verketten:
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
Wir erhalten eine Fehlermeldung, weil wir die Matrizen nicht als Tupel für die Funktion concatenate() bereitstellen konnten.
Um diesen Fehler zu vermeiden, müssen Sie doppelte Klammern verwenden, um die Matrizen wie folgt in Tupelform für die Funktion concatenate() bereitzustellen:
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]])
Diesmal gelingt es uns, die beiden Matrizen fehlerfrei zu verketten.
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:
So beheben Sie KeyError in Pandas
So beheben Sie: ValueError: Float NaN kann nicht in int konvertiert werden
So beheben Sie: ValueError: Operanden konnten nicht mit Formen übertragen werden