Итак, я обнаружил ошибку в своем коде и могу воспроизвести следующее. В основном мне нужно проверить, все ли элементы в np.ndarray
не равны 0.
>>> a = np.ones((3,3))
>>> np.all(a == 0) == False
True
Хорошо, отлично, все значения в пределах a
отличны от нуля. Я знаю, что вместо этого можно сделать np.all((a == 0) == False)
, чтобы явно попросить сравнить с 0, но сначала я этого не сделал, и это заставило меня осознать, что при сравнении is
с ==
есть разница в случае False
.
>>> np.all(a == 0) is False
False
Я знаю, что is
следует сравнивать, если объекты указывают на один и тот же объект. Но значит ли это, что два моих значения, которые вернули False
, на самом деле не указывают на одно и то же False
? Может быть, я просто обдумываю это, хотя ...