IndexError lösen: Als Indizes verwendete Arrays müssen vom Typ Integer(oder Boolean) sein

Olorunfemi Akinlua 21 Juni 2023
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 Akinlua avatar Olorunfemi Akinlua avatar

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.

LinkedIn

Verwandter Artikel - Python Error