IndexError lösen: Als Indizes verwendete Arrays müssen vom Typ Integer(oder Boolean) sein
Bei der Arbeit mit Numpy-Arrays in Python werden möglicherweise verschiedene Fehlermeldungen zu Index- oder Typproblemen angezeigt. Bei diesen vielen Fehlertypen kann IndexError: Als Indizes verwendete Arrays müssen vom Typ Integer (oder Boolean) sein
schwierig sein.
Wenn wir auf IndexError
-Fehlermeldungen stoßen, verwenden wir den falschen Typ. In diesem Fall sollten wir Integer
oder Boolean
verwenden, aber der Array-Index erhält einen anderen Datentyp (String oder Float).
In diesem Artikel erklären wir, wie man mit den Fehlermeldungen IndexError: arrays used as indices must be of integer (or boolean) type
umgeht, wenn man mit Zahlen in Numpy arbeitet.
Verwenden Sie astype()
, um IndexError: Als Indizes verwendete Arrays müssen vom Typ Integer (oder Boolean) sein
in Numpy zu lösen
Numpy funktioniert nur mit zwei Typen, Integer oder Boolean. Wenn es also einen Typ gibt, den es nicht versteht, wird ein Fehler ausgegeben.
Lassen Sie uns die Fehlermeldung neu erstellen, um diese Fehlermeldung besser zu verstehen. Um die Fehlermeldung neu zu erstellen, müssen wir zwei Numpy-Arrays generieren, index
und array
, Werte aus index
extrahieren und die extrahierten Werte verwenden, um auf die Werte in array
zuzugreifen.
Für die extrahierten Werte verwenden wir die Werte der ersten Spalte.
import numpy as np
index = np.array([[0, 1, 2.1], [1, 2, 3.4]])
array = np.array([[1, 2, 3], [4, 5, 6]])
indices = index[:, 0]
print(array[indices])
Ausgang:
Traceback (most recent call last):
File "temp.py", line 7, in <module>
print(array[indices])
IndexError: arrays used as indices must be of integer (or boolean) type
Aus der Fehlermeldung IndexError: Als Indizes verwendete Arrays müssen vom Typ Integer (oder Boolean) sein
wissen wir, dass das Problem aus dem Abschnitt print(array[indices])
stammt.
Da wir wissen, dass es syntaktisch korrekt ist, wissen wir, dass das Problem, nach dem wir suchen, in dem vorhanden ist, was wir für die array
-Bindung parsen. Damit sind wir beim Binding Indizes
angelangt.
Nach dem, was wir aus der Fehlermeldung wissen, ist das Element in der Bindung indices
möglicherweise nicht integer
oder Boolean
. Die Eigenschaft dtype
ist nützlich, um den Typ von Elementen innerhalb von indices
zu überprüfen.
print(indices.dtype)
Ausgang:
float64
Nun, das bestätigt die Ursache des Problems, mit dem wir konfrontiert sind. Die Werte, die wir an die Indizes der array
-Bindung übergeben, sind float64
statt Boolean
.
Um dies zu lösen, müssen wir die Werte in indices
in Integer
oder Boolean
umwandeln. Sinnvoller ist es, sie in Integer
umzuwandeln.
Sie in Boolean
umzuwandeln, könnte ein anderes Mal nützlich sein.
Die astype()
-Methode hilft, die dtype
-Eigenschaft eines Numpy-Arrays zu ändern. Um den dtype
der indices
-Bindung zu ändern, können wir das Folgende verwenden.
indices = index[:, 0].astype(int)
Wir erhalten das Folgende, wenn wir mit dem Ausdruck indices.dtype
nach der Eigenschaft dtype
suchen.
int32
Jetzt wird unser Code zu:
import numpy as np
index = np.array([[0, 1, 2.1], [1, 2, 3.4]])
array = np.array([[1, 2, 3], [4, 5, 6]])
indices = index[:, 0].astype(int)
print(array[indices])
Ausgang:
[[1 2 3]
[4 5 6]]
Wir hätten die Werte von indices
in Boolean
umwandeln können. Lassen Sie uns damit experimentieren.
Dazu haben wir ein Numpy-Array mit zwei Booleans.
indices = index[:, 0].astype(bool)
print(indices)
Ausgang:
[False True]
Die Werte der Bindung indices
waren [0. 1.]
, und bei der Umwandlung von 0
in Boolean ergibt es False
und jede andere Zahl ergibt True
. Lassen Sie uns alles zusammen führen.
import numpy as np
index = np.array([[0, 1, 2.1], [1, 2, 3.4]])
array = np.array([[1, 3, 5], [7, 9, 11]])
indices = index[:, 0].astype(bool)
print(array[indices])
Ausgang:
[[ 7 9 11]]
Denn es verarbeitet nur den True
-Wert.
Wenn Sie daher mit der Fehlermeldung IndexError: Als Indizes verwendete Arrays müssen vom Typ Integer (oder Boolean) sein
konfrontiert werden, wissen Sie, dass irgendwo ein falscher dtype
steht. Verfolgen Sie Ihren Code und konvertieren Sie die erforderlichen Werte.
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedInVerwandter Artikel - Python Error
- Adresse wird bereits verwendet Fehler in Python
- AttributeError: __Exit__ in Python
- AttributeError: 'Dict'-Objekt hat kein Attribut 'Append' in Python
- AttributeError: 'NoneType'-Objekt hat kein Attribut 'Text' in Python
- AttributeError: Int-Objekt hat kein Attribut
- AttributeError: Modul Urllib hat keine Attributanforderung