Zazwyczaj ten komunikat o błędzie podczas próby użycia Python operatorów logicznych (not
, and
, or
) na wyrażeniach porównawczych obejmujących, na przykład tablice numpy
>>> 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()
To dlatego takie porównania, w przeciwieństwie do innych porównań w Pythonie, tworzenia tablic logicznych zamiast pojedynczych wartości logicznych (ale może już wiedział, że):
>>> 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)
częścią rozwiązania do swojej problem prawdopodobnie zastąpi and
przez np.logical_and
, który nadaje operację AND na dwóch tablicach 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])
Jednakże takie tablice wartości logicznych nie może być używany do indeksu w zwykłych listach Pythona, więc trzeba przekonwertować do tablicy:
rbs = np.array([ish[4] for ish in realbooks])
Która linia powoduje błąd? Proszę również sformatować swój kod, aby faktycznie działał. –
Pomoże to wydrukować wartość var. Przypuszczam, że problem dotyczy zmiennej traconej/zmiennoprzecinkowej/tekstowej, którą zmniejszamy ... Jak wyglądają oryginalne dane wymagające serii operacji? – abought