Plastry [1:]
i [:-1]
oznacza wszystkie, oprócz pierwszego i wszystkie oprócz ostatniego elementów tablicy:
>>> import numpy as np
>>> s = np.array((1, 2, 2, 3)) # four element array
>>> s[1:]
array([2, 2, 3]) # last three elements
>>> s[:-1]
array([1, 2, 2]) # first three elements
dlatego porównania wytwarza się szereg logicznych porównań między każdym elementem s[x]
i jego "sąsiad"s[x+1]
, który będzie o jeden krótszy niż oryginalna tablica (ponieważ ostatni element nie ma sąsiada):
>>> s[1:] == s[:-1]
array([False, True, False], dtype=bool)
i stosując tę tablicę do indeksu oryginalna tablica dostaje elementy gdzie porównanie jest True
, czyli elementów, które są takie same jak ich sąsiad:
>>> s[s[1:] == s[:-1]]
array([2])
Zauważ, że to tylko identyfikuje sąsiedztwie zduplikowane wartości.
Wow, dzięki za dokładne wyjaśnienie: D. Przyjmie jak najszybciej. Więc domyślam się znaleźć wszystkich dupków, posortuj, a następnie wykonaj to: D. – zehelvion
@zehelvion tak, jeśli tablica jest nieposortowana, będziesz musiał najpierw sortować tę metodę, aby znaleźć wszystkie duplikaty. – jonrsharpe
Czy tablica nie musi być sortowana jako wymagająca? – gabhijit