![](/img/trans.png)
[英]Most efficient way to test whether each element from one array exists in a another array, using 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]
以下代码在技术上适用于小型数组,但如果a
和b
的大小为 10,000+,则速度非常慢:
ranks = [rankdata(b + [i])[-1] - 1 for i in a]
实现这一结果的最有效方法是什么?
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.