元素处于闭区间的索引

Indices such that elements are in the closed interval

我有一个 numpy 一维数组,我想找到数组的索引,使其值在另一个一维数组指定的闭区间内。具体来说,这里有一个例子

A= np.array([  0.69452994,   3.4132039 ,   6.46148658,  17.85754453,
        21.33296454,   1.62110662,   8.02040621,  14.05814177,
        23.32640469,  21.12391059])
b = np.array([  0. ,   3.5,   9.8,   19.8 ,  50.0])

我想找到 b 中的索引,使得 A 中的值位于哪个闭区间内(b 始终按从 0 开始到 A 可以采用的最大可能值结束的排序顺序。

在这个具体示例中,我的输出将是

indx = [0,0,1,2,3,0,1,2,3,3]

我该怎么做?我试过 np.where,但没有成功。

鉴于 b 的排序性质,我们可以简单地使用 searchsorted/digitize 来获取可以放置 A 之外的元素以保持排序顺序的索引,这实际上意味着获取每个 b 元素的边界索引,最后从这些索引中减去 1 以获得所需的输出。

因此,假设右侧边界是开放边界,则解为 -

np.searchsorted(b,A)-1
np.digitize(A,b,right=True)-1

对于左侧开放边界,使用:

np.searchsorted(b,A,'right')-1
np.digitize(A,b,right=False)-1