假设我有两个数组:
a = np.array([2, 5, 4, 3, 1])b = np.array([4.5, 1.5, 3.5])
a = np.array([2, 5, 4, 3, 1])
b = np.array([4.5, 1.5, 3.5])
如果b中的每个元素都在b中,我想找出它的秩,那么这就是我们想要的输出:
b
[1, 3, 2, 1, 0]
下面的代码在技术上适用于小数组,但如果a和b的大小超过10,000,则会非常慢:
a
ranks = [rankdata(b + [i])[-1] - 1 for i in a]
实现这一结果的最有效方法是什么?
3qpi33ja1#
使用searchsorted
searchsorted
ind = np.argsort(y)np.searchsorted(y, x, sorter=ind)# array([1, 3, 2, 1, 0], dtype=int64)
ind = np.argsort(y)
np.searchsorted(y, x, sorter=ind)
# array([1, 3, 2, 1, 0], dtype=int64)
如果y有重复项,您可能需要修改side参数。
y
side
1条答案
按热度按时间3qpi33ja1#
使用
searchsorted
如果
y
有重复项,您可能需要修改side
参数。