Say I have two arrays:
a = np.array([2, 5, 4, 3, 1])
b = np.array([4.5, 1.5, 3.5])
I want to find the rank of each element of a if it were in b. So this would be the desired output:
[1, 3, 2, 1, 0]
The following code technically works for small arrays but is extremely slow if a and b are 10,000+ in size:
ranks = [rankdata(b + [i])[-1] - 1 for i in a]
What is the most efficient way of achieving this result?