【问题标题】:Indices such that elements are in the closed interval使元素处于闭合区间的索引
【发布时间】:2017-11-20 09:27:06
【问题描述】:

我有一个 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,但没有任何成功。

【问题讨论】:

    标签: python-2.7 numpy intervals matrix-indexing


    【解决方案1】:

    鉴于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
    

    【讨论】:

      猜你喜欢
      • 2022-06-11
      • 2019-05-18
      • 2011-07-26
      • 1970-01-01
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多