假設我有兩個陣列:
a = np.array([2, 5, 4, 3, 1])
b = np.array([4.5, 1.5, 3.5])
我想找到每個元素的排名,a如果它在b. 所以這將是所需的輸出:
[1, 3, 2, 1, 0]
以下代碼在技術上適用于小型陣列,但如果大小為 10,000 ,a則速度非常慢:b
ranks = [rankdata(b [i])[-1] - 1 for i in a]
實作這一結果的最有效方法是什么?
uj5u.com熱心網友回復:
利用searchsorted
ind = np.argsort(y)
np.searchsorted(y, x, sorter=ind)
# array([1, 3, 2, 1, 0], dtype=int64)
如果y有重復項,您可能需要修改side引數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/490688.html
