numpy searchsorted lexicographic on slice

时间:2014-04-03 20:26:53

标签: python search numpy scipy binary-search

假设我有一个已经排序的numpy数组。

>>> x
array([[1, 2, 3, 1],
       [2, 2, 3, 2],
       [2, 3, 3, 4],
       [3, 4, 4, 4],
       [4, 5, 5, 5]])

我想根据第一个两个列进行右手二分法。

类似于(quasicode)numpy.searchsorted(x, [2, 2], side='right')的东西应返回2,即[2, 2, 3, 2][2, 3, 3, 4]之间的索引。

1 个答案:

答案 0 :(得分:2)

这个怎么样:

>>> i1 = np.searchsorted(x[:, 0], 2, side='l')
>>> i2 = np.searchsorted(x[i1:, 0], 2, side='r')
>>> i3 = np.searchsorted(x[i1:i1+i2, 1], 2, side='r')
>>> i1 + i3
2