Vấn đề này có vẻ dễ dàng nhưng tôi không thể có được một giải pháp đẹp mắt. Tôi có hai mảng numpy (A và B), và tôi muốn lấy các chỉ số A, trong đó các phần tử A nằm trong B và cũng có các chỉ số A, trong đó các phần tử không có trong B.Kiểm tra xem mỗi phần tử trong một mảng có nhiều mảng nằm trong một mảng khác
Vì vậy, nếu
A = np.array([1,2,3,4,5,6,7])
B = np.array([2,4,6])
Hiện nay tôi đang sử dụng
C = np.searchsorted(A,B)
mà lợi dụng thực tế là A
là theo thứ tự, và mang lại cho tôi [1, 3, 5]
, các chỉ số của các yếu tố có trong A
. Điều này thật tuyệt, nhưng làm cách nào để nhận được D = [0,2,4,6]
, chỉ mục của các thành phần của A
không nằm trong số B
?
Cảm ơn! Tôi cũng thích câu trả lời được cung cấp bởi alexhb bằng cách sử dụng np.setdiff1d. Tôi đã hy vọng rằng có một chức năng có thể đưa cho tôi các chỉ số trực tiếp, nhưng nó hoạt động tốt. – DanHickstein
Có thể có, @Dan, nhưng tôi không thể nghĩ về nó. Nếu bạn không cần 'C', sử dụng giải pháp của mình, nhưng tôi sẽ nhanh gấp đôi nếu bạn đã có' C'. – askewchan