应该是一个简单的问题,但我无法在任何地方找到答案.~python中的运算符被记录为按位反转运算符.精细.我注意到看似精神分裂的行为,即:
~True -> -2
~1 -> -2
~False -> -1
~0 -> -1
~numpy.array([True,False],dtype=int) -> array([-2,-1])
~numpy.array([True,False],dtype=bool) -> array([False,True])
Run Code Online (Sandbox Code Playgroud)
在前4个示例中,我可以看到python正在实现(如文档所述)~x = -(x+1),输入被视为int,即使它是布尔值.因此,对于标量布尔值,~不被视为逻辑否定.并非在使用int类型的布尔值定义的numpy数组上的行为相同.
~那么为什么在布尔数组上作为逻辑否定运算符工作(另请注意:~numpy.isfinite(numpy.inf) -> True?)?
我必须not()在标量上使用它是非常烦人的,但是not()无法否定数组.然后对于一个数组,我必须使用~,但~不会否定一个标量......
Numpy中是否有一个函数在二进制数组中反转0和1?如果
a = np.array([0, 1, 0, 1, 1])
Run Code Online (Sandbox Code Playgroud)
我想得到:
b = [1, 0, 1, 0, 0]
Run Code Online (Sandbox Code Playgroud)
我用:
b[a==0] = 1
b[a==1] = 0
Run Code Online (Sandbox Code Playgroud)
但也许它已经在Numpy中存在了这样做.