反转二进制numpy数组

时间:2019-02-27 14:22:46

标签: python numpy

对于numpy数组(当然有数量),是否存在一种“逻辑否”。

例如,考虑以下数组: x = [1,0,1,0,0,1]

我正在寻找一种简单的方法来计算其“逆” y = [0,1,0,1,1,0]

4 个答案:

答案 0 :(得分:13)

对于1s0s的数组,您可以简单地从x中减去1中的值:

x = np.array([1,0,1,0,0,1])
1-x
# array([0, 1, 0, 1, 1, 0])

或者您也可以将XOR中的二进制值按位x1一起使用:

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]

注释:

  1. (x == 0)给出一个布尔数组,其中False出现在1的位置,而True出现在0的位置。
  2. 调用方法astype(int)或将标量0添加到矩阵,将False转换为0,将True转换为1