对于numpy数组(当然有数量),是否存在一种“逻辑否”。
例如,考虑以下数组:
x = [1,0,1,0,0,1]
我正在寻找一种简单的方法来计算其“逆”
y = [0,1,0,1,1,0]
答案 0 :(得分:13)
对于1s
和0s
的数组,您可以简单地从x
中减去1
中的值:
x = np.array([1,0,1,0,0,1])
1-x
# array([0, 1, 0, 1, 1, 0])
或者您也可以将XOR
中的二进制值按位x
与1
一起使用:
x^1
# array([0, 1, 0, 1, 1, 0])
答案 1 :(得分:5)
是的,您可以使用np.logical_not
:
np.logical_not(x).astype(int)
输出:
array([0, 1, 0, 1, 1, 0])
答案 2 :(得分:4)
或使用XOR:
y = [n ^ 1 for n in x]
答案 3 :(得分:2)
这是一种方法:
y = (x == 0).astype(int)
或者:
y = 0 + (x == 0)
输出:
[0 1 0 1 1 0]
注释:
(x == 0)
给出一个布尔数组,其中False
出现在1
的位置,而True
出现在0
的位置。astype(int)
或将标量0
添加到矩阵,将False
转换为0
,将True
转换为1