Насколько я понимаю, ==
проверяет равенство стоимости, а is
проверяет идентичность структуры за значением (как, скажем, ===
в некоторые другие языки).np.isnan() == False, но np.isnan() не является ложным
Учитывая, что я не понимаю следующее:
np.isnan(30) == False
Out[19]:
True
np.isnan(30) is False
Out[20]:
False
Это, кажется, не быть в случае с другими проверки личности:
(5 == 4) == False
Out[22]:
True
(5 == 4) is False
Out[23]:
True
Он появляется, как будто np.isnan()
возвращается False
как но не как личность. Почему это так?
Вы никогда не должны испытать на 'false' или' true' в первую очередь. Используйте 'if np.isnan (..)' и 'if not np.isnan (..)'. Нет требования, чтобы интерпретатор Python использовал только одну копию объектов логического значения, очевидно, что у Numpy нет. –
@MartijnPieters, который кажется скорее комментарием стиля (который я ценю), но не как ответ на поведение функции? – FooBar
(То есть, в то время как я * должен * не выполнять эту операцию, I * должен уметь * делать это. No?) – FooBar