Инвертировать двоичный массив NumPy - PullRequest
0 голосов
/ 27 февраля 2019

есть ли «логическое нет» для массивов с числами (конечно же, чисел).

Например, рассмотрим этот массив: x = [1,0,1,0,0,1]

Я ищу легкийспособ вычисления его "обратного" y = [0,1,0,1,1,0]

Ответы [ 4 ]

0 голосов
/ 27 февраля 2019

Вот один из способов:

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
0 голосов
/ 27 февраля 2019

Да, вы можете использовать np.logical_not:

np.logical_not(x).astype(int)

Выход:

array([0, 1, 0, 1, 1, 0])
0 голосов
/ 27 февраля 2019

Или используя XOR:

y =  [n ^ 1 for n in x]
0 голосов
/ 27 февраля 2019

Для массива 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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...