相关疑难解决方法(0)

python中'和'(布尔)与'&'(按位)之间的区别.为什么列表与numpy数组的行为存在差异?

是什么解释了列表与numpy.arrays上布尔运算和按位运算的行为差异?

我对在python中正确使用' &'vs' and' 感到困惑,如下面的简单示例所示.

mylist1 = [True,  True,  True, False,  True]
mylist2 = [False, True, False,  True, False]

>>> len(mylist1) == len(mylist2)
True

# ---- Example 1 ----
>>> mylist1 and mylist2
[False, True, False, True, False]
# I would have expected [False, True, False, False, False]

# ---- Example 2 ----
>>> mylist1 & mylist2
TypeError: unsupported operand type(s) for &: 'list' and 'list'
# Why not just like example 1?

>>> import numpy as np …
Run Code Online (Sandbox Code Playgroud)

python bit-manipulation numpy boolean-expression ampersand

124
推荐指数
5
解决办法
8万
查看次数

在运算符中,float("NaN")和np.nan

我以前认为inPython 中的运算符使用相等性检查来检查某些集合中元素的存在==,因此element in some_list大致相当于any(x == element for x in some_list).例如:

True in [1, 2, 3]
# True because True == 1
Run Code Online (Sandbox Code Playgroud)

要么

1 in [1., 2., 3.]
# also True because 1 == 1.
Run Code Online (Sandbox Code Playgroud)

然而,众所周知,它NaN本身并不等同.所以我期待的float("NaN") in [float("NaN")]False.而且它False确实是.

但是,如果我们使用numpy.nan而不是float("NaN"),情况则完全不同:

import numpy as np
np.nan in [np.nan, 1, 2]
# True
Run Code Online (Sandbox Code Playgroud)

np.nan == np.nan仍然给False!

这怎么可能?np.nan和之间有什么区别float("NaN") …

python containers numpy nan

27
推荐指数
2
解决办法
3485
查看次数