元素处于闭区间的索引
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
我有一个 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