Contador de Python| Encuentra filas duplicadas en una array binaria

Dada una array binaria cuyos elementos son solo 0 y 1, necesitamos imprimir las filas que son duplicados de las filas que ya están presentes en la array.

Ejemplos:

Input : [[1, 1, 0, 1, 0, 1],
         [0, 0, 1, 0, 0, 1],
         [1, 0, 1, 1, 0, 0],
         [1, 1, 0, 1, 0, 1],
         [0, 0, 1, 0, 0, 1],
         [0, 0, 1, 0, 0, 1]]

Output : (1, 1, 0, 1, 0, 1)
         (0, 0, 1, 0, 0, 1)

Tenemos una solución existente para este problema, consulte Buscar filas duplicadas en un enlace de array binaria . Podemos resolver este problema muy rápidamente en Python usando el método Counter() . El enfoque es muy simple,

  1. Cree un diccionario usando el método de contador que tendrá filas como clave y su frecuencia como valor.
  2. Ahora recorra el diccionario por completo e imprima todas las filas que tengan una frecuencia mayor que 1.
# Function to find duplicate rows in a binary matrix
from collections import Counter
  
def duplicate(input):
  
     # since lists are unhasable for counter method
     # because lists are mutable so first we will cast
     # each row (list) into tuple
     input = map(tuple,input)
  
     # now create dictionary
     freqDict = Counter(input)
  
     # print all rows having frequency greater than 1
     for (row,freq) in freqDict.items():
          if freq>1:
              print (row)
  
# Driver program
if __name__ == "__main__":
    input = [[1, 1, 0, 1, 0, 1],
            [0, 0, 1, 0, 0, 1],
            [1, 0, 1, 1, 0, 0],
            [1, 1, 0, 1, 0, 1],
            [0, 0, 1, 0, 0, 1],
            [0, 0, 1, 0, 0, 1]]
    duplicate(input)

Producción:

(1, 1, 0, 1, 0, 1)
(0, 0, 1, 0, 0, 1)

Publicación traducida automáticamente

Artículo escrito por Shashank Mishra 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 *