Built-in binary search algorithm in numpy that is like np.searchsorted?

Question:

I have a main numpy array a and I have another numpy array b. What I want to do is go through each element of b and check if that element exists in a. Keep in mind that both a and b are pretty massive, so I would like to avoid O(N) search times.

I know np.searchsorted(a,b) exists, but this provides an index at which I need to place b. This does not tell me if an element of b is present in a right off the bat.

My question is, is there a binary search algorithm built into numpy that simply reports True or False if an element from b exists in a? I am aware that I can write one but if there is a vectorized that is readily available, I could save some time.

Any advice would be appreciated!

Asked By: bad_chemist

||

Answers:

Once you have completed the sorted search you can check if the elements at those indices are equal to the elements in b:

a = numpy.array([1,2,3,4,7])
b = numpy.array([1,4,5,7])
x = numpy.searchsorted(a,b)
boolean_array = a[x] == b

searchsorted indicates that with the default side = 'left' it ensures : a[i-1] < v <= a[i] so if a[i] is equal to the corresponding element in b then it gives the match you want.

Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.