a
并且b
是两个 Numpy 整数数组。它们是排序的,没有重复。b
是 的子集a
。我需要找到a
每个元素的索引b
。是否有一个有效的 Numpy 函数可以提供帮助,所以我可以避免 python 循环?
(实际上,数组是 ofpandas.DatetimeIndex
和 Numpy datetime64
,但我想它不会改变答案。)
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。:-)