Mam (N,3)
tablicę wartości NumPy:Usuwanie wierszy z duplikatów w tablicy numpy
>>> vals = numpy.array([[1,2,3],[4,5,6],[7,8,7],[0,4,5],[2,2,1],[0,0,0],[5,4,3]])
>>> vals
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 7],
[0, 4, 5],
[2, 2, 1],
[0, 0, 0],
[5, 4, 3]])
chciałbym usunąć wiersze z tablicy, które mają zduplikowane wartości. Na przykład, wynik dla powyższej tablicy powinno być:
>>> duplicates_removed
array([[1, 2, 3],
[4, 5, 6],
[0, 4, 5],
[5, 4, 3]])
nie jestem pewien jak to zrobić skutecznie z numpy bez pętli (tablica może być dość duże). Czy ktoś wie, jak to zrobić?
Przez „bez pętli” Co masz na myśli? Musisz sprawdzić każdy element w tablicy, więc jest to O (m * n) bez względu na to, jakich sztuczek używasz do ukrycia pętli. – agf
Myślę, że on oznacza pętlę w Numpy zamiast pętli w Pythonie. O (m * n) wewnątrz skompilowanej funkcji Numpy jest znacznie szybsze niż O (m * n) w pętli 'for' Pythona. Gdy opcje są skompilowane z kodem i zinterpretowanym kodem, stałe mają znaczenie. –
['From your comments'] (https://stackoverflow.com/questions/7438438/removing-duplicates-in-each-row-of-a-numpy-array/45136720#comment8994361_7438505), ponieważ starałeś się uogólnij to, aby poradzić sobie z generycznym nie. kolumn, możesz znaleźć ["to rozwiązanie"] (https://stackoverflow.com/a/45136720/) na to pytanie warte przeczytania. – Divakar