есть ли «логическое нет» для массивов с числами (конечно же, чисел).
Например, рассмотрим этот массив: x = [1,0,1,0,0,1]
x = [1,0,1,0,0,1]
Я ищу легкийспособ вычисления его "обратного" y = [0,1,0,1,1,0]
y = [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)
Да, вы можете использовать np.logical_not:
np.logical_not
np.logical_not(x).astype(int)
Выход:
array([0, 1, 0, 1, 1, 0])
Или используя XOR:
y = [n ^ 1 for n in x]
Для массива 1s и 0s вы можете просто вычесть значения в x из 1:
1s
0s
x
x = np.array([1,0,1,0,0,1]) 1-x # array([0, 1, 0, 1, 1, 0])
Или вы также можете использовать битовое значение XOR двоичных значений в x с 1:
XOR
x^1 # array([0, 1, 0, 1, 1, 0])