4

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

(实际上,数组是 ofpandas.DatetimeIndex和 Numpy datetime64,但我想它不会改变答案。)

4

1 回答 1

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。:-)

于 2013-03-04T15:36:46.987 回答