scipy 求一个numpy数组在另一个numpy数组中的秩的最有效方法是什么?

cuxqih21  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(161)

假设我有两个数组:

a = np.array([2, 5, 4, 3, 1])
b = np.array([4.5, 1.5, 3.5])

如果b中的每个元素都在b中,我想找出它的秩,那么这就是我们想要的输出:

[1, 3, 2, 1, 0]

下面的代码在技术上适用于小数组,但如果ab的大小超过10,000,则会非常慢:

ranks = [rankdata(b + [i])[-1] - 1 for i in a]

实现这一结果的最有效方法是什么?

3qpi33ja

3qpi33ja1#

使用searchsorted

ind = np.argsort(y)
np.searchsorted(y, x, sorter=ind)

# array([1, 3, 2, 1, 0], dtype=int64)

如果y有重复项,您可能需要修改side参数。

相关问题