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,
- Cree un diccionario usando el método de contador que tendrá filas como clave y su frecuencia como valor.
- 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