Sie in der Regel diese Fehlermeldung erhalten, wenn sie versuchen Python Booleschen Operatoren zu verwenden (not
, and
, or
) auf Vergleichsausdrücke Numpy Arrays beteiligt, z.B.
>>> x = np.arange(-5, 5)
>>> (x > -2) and (x < 2)
Traceback (most recent call last):
File "<ipython-input-6-475a0a26e11c>", line 1, in <module>
(x > -2) and (x < 2)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Das ist, weil solche Vergleiche, wie in Python zu anderen Vergleiche im Gegensatz Arrays von booleans zu schaffen, anstatt einzelne booleans (aber vielleicht wussten Sie schon, dass):
>>> x > -2
array([False, False, False, False, True, True, True, True, True, True], dtype=bool)
>>> x < 2
array([ True, True, True, True, True, True, True, False, False, False], dtype=bool)
Ein Teil der Lösung Ihrer Problem wahrscheinlich and
von np.logical_and
zu ersetzen, was sendet die UND-Verknüpfung über zwei Anordnungen von np.bool
.
>>> np.logical_and(x > -2, x < 2)
array([False, False, False, False, True, True, True, False, False, False], dtype=bool)
>>> x[np.logical_and(x > -2, x < 2)]
array([-1, 0, 1])
jedoch solche Anordnungen von booleans können nicht auf Index in gewöhnliche Python-Listen verwendet werden, so müssen Sie das auf ein Array konvertieren:
rbs = np.array([ish[4] for ish in realbooks])
Welche Zeile verursacht den Fehler? Formatieren Sie auch Ihren Code so, dass er tatsächlich ausgeführt wird. –
Es würde helfen, wenn Sie den Wert von Var ausdrucken würden. Bei einer Schätzung ist das Problem in der Zeichenfolge/float/text ersetzte Variable, die Sie dekrementieren ... Wie sehen die ursprünglichen Daten aus, die diese Reihe von Operationen erfordern würde? – abought