Я сбит с толку поведением следующего наблюдения
>>> t = numpy.array([1,2,3])
>>> type(t)
<class 'numpy.ndarray'>
>>> type(t) != numpy.ndarray
False
>>> type(t) == numpy.ndarray
True
>>> type(t) != numpy.ndarray or t == None
array([False, False, False])
>>> type(t) != numpy.ndarray or t != None
array([ True, True, True])
Последние 2 оператора, похоже, возвращают логический список, а не просто T / F из других операторов. Очевидно, что если мы хотим проверить, является ли объект пустым массивом, мы столкнемся с ошибкой ValueError из-за неоднозначности.
Почему так себя ведет?