numpy在未排序数组上的位置

时间:2019-05-01 12:48:47

标签: python python-3.x numpy

我想在与列表匹配的颠簸数组中找到元素的索引。我的数组未排序。到目前为止,我正在使用以下代码

Y = np.array([ 2,2,1,1,3,1,3,2,-1,-1])
indcs = [np.where(Y == c)[0] for c in range(1,4)]
  

indcs

     

[array([2,3,5]),array([0,1,7]),array([4,6])]

但是我觉得有一种更好的方法来获取要作为行搜索的每个值的结果,而不是简单地使用for循环进行迭代。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

这是从nonzero

的一种方式
np.nonzero(Y==np.arange(1,4)[:,None])
Out[877]: 
(array([0, 0, 0, 1, 1, 1, 2, 2], dtype=int64),
 array([2, 3, 5, 0, 1, 7, 4, 6], dtype=int64))

答案 1 :(得分:0)

此代码可能会对您有所帮助。

    indices=[i for i,v in enumerate(Y.tolist()) if v in range(0,4)]