¿Cómo invertir los elementos de una array booleana en Python?

Dada una array booleana, la tarea aquí es invertir sus elementos. Una array booleana es una array que contiene solo valores booleanos como Verdadero o Falso, 1 o 0. 

Entrada: A=[verdadero, verdadero, falso]

Salida: A= [falso, falso, verdadero]

Entrada: A=[0,1,0,1] 

Salida: A=[1,0,1,0]

Método 1:

Puede usar el método simple if else para invertir la array. En la implementación que se muestra a continuación, solo necesita verificar el valor de cada índice en la array, si el valor es verdadero, cámbielo a falso; de lo contrario, cámbielo a verdadero. Este es uno de los métodos más simples que puede usar para invertir elementos de una array booleana.

Programa:

Python3

a1 = ((0, 1, 0, 1))
a = list(a1)
  
for x in range(len(a)):
    if(a[x]):
        a[x] = 0
    else:
        a[x] = 1
  
print(a)

Producción:

[1, 0, 1, 0]

Método 2:

También puede usar una función incorporada de la biblioteca numpy para invertir toda la array.

Sintaxis:

np.invert(boolean[] a)

Programa:

Python

import numpy as np
  
  
a = np.array((True, True, False, True, False))
b = np.invert(a)
print(b)

Producción:

[False False  True False  True]

Método 3:

También podemos usar el operador Tilde ( ~ ), también conocido como operador de negación bit a bit en computación para invertir la array dada. Toma el número n como número binario y «voltea» todos los bits 0 a 1 y 1 a 0 para obtener el número binario complementario. 

Entonces, en la array booleana para Verdadero o 1 , dará como resultado -2 y para Falso o 0 , dará como resultado   -1. Y de nuevo usando if..else podemos convertir la array en una respuesta requerida.

Programa:

Python3

a1 = ((0, 1, 0, 1))
a = list(a1)
  
for x in range(len(a)):
    # using Tilde operator(~)
    a[x] = ~a[x]
  
print(a)

Producción:

[-1, -2, -1, -2]

Publicación traducida automáticamente

Artículo escrito por nikhiltanna33 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *