【发布时间】:2019-02-27 14:22:45
【问题描述】:
对于 numpy 数组(当然是数字)是否存在一种“逻辑否”。
例如,考虑这个数组:
x = [1,0,1,0,0,1]
我正在寻找一种简单的方法来计算它的“逆”
y = [0,1,0,1,1,0]
【问题讨论】:
对于 numpy 数组(当然是数字)是否存在一种“逻辑否”。
例如,考虑这个数组:
x = [1,0,1,0,0,1]
我正在寻找一种简单的方法来计算它的“逆”
y = [0,1,0,1,1,0]
【问题讨论】:
对于1s 和0s 的数组,您可以简单地从1 中减去x 中的值:
x = np.array([1,0,1,0,0,1])
1-x
# array([0, 1, 0, 1, 1, 0])
或者您也可以将x 中二进制值的按位XOR 与1 相乘:
x^1
# array([0, 1, 0, 1, 1, 0])
【讨论】:
或者使用异或:
y = [n ^ 1 for n in x]
【讨论】:
是的,你可以使用np.logical_not:
np.logical_not(x).astype(int)
输出:
array([0, 1, 0, 1, 1, 0])
【讨论】:
这是一种方法:
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
【讨论】: