Одна вещь Я заметил, что if np.array([False])
или bool(np.array([False])
возвращает bool единственного элемента в массиве. И вы не должны иметь более одного элемента в массиве numpy, если вы делаете if
или bool
.
Если есть более одного элемента, должны использовать a.any()
или a.all()
>>> if np.array([False, False]):
... print 's'
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>>> bool(np.array([False, False]))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>>>
>>>
>>> bool(np.array([False, 232]))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>>>
>>>
>>> bool(np.array([False, 232]).any())
True
>>>
Да, вы можете изменить его с помощью [ '__bool__'] (https://docs.python.org/3.1/reference /datamodel.html#object.__bool__) в Python 3 и ['__nonzero__'] (https://docs.python.org/2/reference/datamodel.html#object.__nonzero__) в Python 2. –
Большое спасибо !! Вы отвечаете, чтобы я понял. – redstone
Почему вы это пытаетесь? Использование массива numpy в выражении if почти никогда не работает, как ожидают люди. – hpaulj