为什么当我使用“ is”而不是“ ==”时np.all返回错误的值?

Chr*_*sso 3 python numpy

因此,我在代码中找到了一个错误,可以复制以下内容。基本上我需要检查中的所有元素np.ndarray是否都不为0。

>>> a = np.ones((3,3))
>>> np.all(a == 0) == False
True
Run Code Online (Sandbox Code Playgroud)

好的,里面的所有值a都不为零。我知道我还可以做的np.all((a == 0) == False),而不是明确要求进行比较,以0,但我并没有在第一,这让我意识到有比较时的差异is,以==False情况。

>>> np.all(a == 0) is False
False
Run Code Online (Sandbox Code Playgroud)

我知道is应该比较如果对象指向相同的对象。但这是否意味着我返回的两个值False实际上并不指向相同的值False?我可能只是在想这个...

And*_*den 5

返回类型numpy.bool_不是bool

In [11]: type(np.all(a == 0))
Out[11]: numpy.bool_

In [12]: type(False)
Out[12]: bool
Run Code Online (Sandbox Code Playgroud)

is检查断言两个对象指向同一个对象