繁体   English   中英

在另一个数组中找到一个 numpy 数组的行列的最有效方法是什么?

[英]What is the most efficient way of finding the ranks of one numpy array in another?

假设我有两个数组:

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

如果它在b中,我想找到a的每个元素的等级。 所以这将是所需的输出:

[1, 3, 2, 1, 0]

以下代码在技术上适用于小型数组,但如果ab的大小为 10,000+,则速度非常慢:

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

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

使用searchsorted

ind = np.argsort(y)
np.searchsorted(y, x, sorter=ind)
# array([1, 3, 2, 1, 0], dtype=int64)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM