Numpy exclusive-OR или оператор XOR возвращает True, когда одно из значений равно True, но не оба.
Что такое функция Numpy logical_xor в Python?
Функция Numpy logical_xor() в Python вычисляет результат ai XOR bi для каждого элемента ai массива1 с соответствующим элементом bi массива2 и возвращает результат в виде массива. Оба входных массива должны иметь одинаковую форму, чтобы этот метод работал.
Синтаксис
|
1 |
numpy.logical_xor(arr1, arr2, out=None, where=True, dtype=None) |
Параметры
- arr1: Входной массив array_like, содержащий элементы ai.
- arr2: Входной массив array_like, содержащий элементы bi.
- out: (ndarray, None или кортеж ndarray) [Необязательный параметр] Он определяет альтернативный выходной массив, в который помещается результирующий продукт. Он должен иметь ту же или широковещательную форму, что и ожидаемый результат.
- where: (array_like) [Необязательный параметр] Где True, это позиции, в которых должен применяться оператор. Где False, это позиции, которые нужно оставить в выходном массиве.
- dtype: [Необязательный параметр] Определяет тип возвращаемого массива.
Возвращаемое значение
Результатом поэлементного логического XOR является массив.

Примечание.
- Если входные массивы пусты, этот метод возвращает пустой массив.
- Этот метод можно использовать для печати таблицы истинности логического оператора xor.
- Возвращает ValueError при передаче массивов разных форм.
- Метод можно использовать и с комплексными числами.
Примеры
Рассмотрим примеры с методом logical_xor().
Пример 1
В данном примере демонстрируется использование этого метода и устанавливается таблица истинности для логического оператора xor.
|
1 2 3 4 5 6 7 8 9 10 11 |
import numpy as np arr1 = [0, 0, 1, 1] arr2 = [0, 1, 0, 1] arr3 = np.logical_xor(arr1, arr2) print(arr3) arr4 = [False, False, True, True] arr5 = [False, True, False, True] arr6 = np.logical_xor(arr4, arr5) print(arr6) |
Выход:
|
1 2 |
[False True True False] [False True True False] |
Пример 2
В следующем коде показан случай, когда элемент массива является комплексным числом.
|
1 2 3 4 5 6 |
import numpy as np arr1 = [3+4j] arr2 = [3+4j] arr3 = np.logical_xor(arr1, arr2) print(arr3) |
Выход:
|
1 |
[False] |
Пример 3
В следующем коде показан случай, когда передается пустой массив.
|
1 2 3 4 5 6 |
import numpy as np arr1 = [] arr2 = [] arr3 = np.logical_xor(arr1, arr2) print(arr3) |
Выход:
|
1 |
[] |
Пример 4
В следующем примере демонстрируется случай, когда передаются массивы разных форм.
|
1 2 3 4 5 6 |
import numpy as np arr1 = [0, 0, 1, 1] arr2 = [1, 0, 1, 0, 1] arr3 = np.logical_xor(arr1, arr2) print(arr3) |
Выход:
|
1 2 3 4 |
Traceback(most recent call last): File "app.py", line 5, in <module> arr3 = np.logical_xor(arr1, arr2) ValueError: operands could not be broadcast together with shapes(4,)(5,) |
Пример 5
В следующем коде показано использование параметра where.
|
1 2 3 4 5 6 7 8 |
import numpy as np arr1 = [0, 0, 1, 0] arr2 = [0, 0, 1, 0] arr3 = np.logical_xor(arr1, arr2, where=[True, False, True, False]) arr4 = np.logical_xor(arr1, arr2) print(arr3) print(arr4) |
Выход:
|
1 2 |
[False True False True] [False False False False] |
Пример 6
В следующем примере демонстрируется случай, когда dtype указывает тип данных элементов.
|
1 2 3 4 5 6 |
import numpy as np arr1 = [0, 0, 1, 1] arr2 = [0, 0, 1, 1] arr3 = np.logical_xor(arr1, arr2, dtype=np.double) print(arr3.dtype == np.int) |
Выход:
|
1 |
False |
Пример 7
В следующем примере демонстрируется применение этого метода в простом контексте программирования.
Двусторонний переключатель управляет электрической цепью таким образом, что цепь замыкается только тогда, когда ровно один из переключателей включен. Учитывая состояние переключателей в столбце 1 и их аналог в столбце 2 для разных цепей, определите, какие цепи замкнуты.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import numpy as np n = int(input("Count: ")) column1 = [] column2 = [] for i in range(n): column1.append(int(input())) for i in range(n): column2.append(int(input())) on_status = np.logical_xor(column1, column2) print("Closed circuit: ", on_status) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Test Case 1: Count: 2 0 0 1 1 Closed circuit: [ True True] Test Case 2: Count: 3 0 1 0 1 1 1 Closed circuit: [ True False True] |
