在Numpy数组中查找多个值

时间:2013-03-04 15:25:58

标签: python numpy pandas

ab是两个Numpy整数数组。它们是有序的,没有重复。 ba的子集。我需要在a的每个元素的b中找到索引。是否有一个有效的Numpy函数可以帮助,所以我可以避免python循环?

(实际上,数组是pandas.DatetimeIndex和Numpy datetime64,但我想它并没有改变答案。)

1 个答案:

答案 0 :(得分:12)

numpy.searchsorted()可用于执行此操作:

In [15]: a = np.array([1, 2, 3, 5, 10, 20, 25])

In [16]: b = np.array([1, 5, 20, 25])

In [17]: a.searchsorted(b)
Out[17]: array([0, 3, 5, 6])

根据我的理解,它不需要对b进行排序,并在a上使用二进制搜索。这意味着它是O(n logn)而不是O(n)。

如果这还不够好,总会有Cython。 : - )