Ten problem wydaje się łatwy, ale nie mogę znaleźć ładnie wyglądającego rozwiązania. Mam dwie niezgrabne tablice (A i B) i chcę uzyskać indeksy A, w których elementy A są w B, a także uzyskać indeksy A, w których elementy nie są w B.Sprawdź, czy każdy element w tablicy numpy znajduje się w innej tablicy.
Tak więc, jeśli
A = np.array([1,2,3,4,5,6,7])
B = np.array([2,4,6])
Obecnie używam
C = np.searchsorted(A,B)
który wykorzystuje fakt, że A
jest w porządku, i daje mi [1, 3, 5]
indeksy z elementów, które znajdują się w A
. To świetnie, ale jak uzyskać D = [0,2,4,6]
, indeksy elementów A
, które nie są w B
?
Dzięki! Podoba mi się również odpowiedź udzielona przez alexhb przy użyciu np.setdiff1d. Miałem nadzieję, że istnieje funkcja, która dałaby mi wskaźniki bezpośrednio, ale działa to dobrze. – DanHickstein
Może być, @ Dan, ale nie mogę o tym myśleć. Jeśli nie potrzebujesz 'C', użyj jego rozwiązania, ale moje będzie dwa razy szybsze, jeśli masz już' C'. – askewchan