【问题标题】:Invert binary numpy array反转二进制numpy数组
【发布时间】:2019-02-27 14:22:45
【问题描述】:

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

例如,考虑这个数组: x = [1,0,1,0,0,1]

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

【问题讨论】:

    标签: python numpy


    【解决方案1】:

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

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

    或者您也可以将x 中二进制值的按位XOR1 相乘:

    x^1 
    # array([0, 1, 0, 1, 1, 0])
    

    【讨论】:

    • 为什么是 1-x?一些0不会变成-1吗?是因为二进制类型吗?例如uint8?
    【解决方案2】:

    或者使用异或:

    y =  [n ^ 1 for n in x]
    

    【讨论】:

      【解决方案3】:

      是的,你可以使用np.logical_not

      np.logical_not(x).astype(int)
      

      输出:

      array([0, 1, 0, 1, 1, 0])
      

      【讨论】:

        【解决方案4】:

        这是一种方法:

        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转换为0True转换为1

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-30
          • 2017-01-03
          • 2017-05-15
          • 1970-01-01
          • 2020-08-05
          相关资源
          最近更新 更多