2015-06-04 198 views
4

我在Python中有两个向量:PredictionsLabels。我想要做的是找出这两个向量具有相同元素的一组索引。例如,让我们说的载体是:如何找到Python中两个向量具有相同元素的索引集合

Predictions = [4, 2, 5, 8, 3, 4, 2, 2] 

    Labels = [4, 3, 4, 8, 2, 2, 1, 2] 

所以索引集,其中两个矢量具有相同的元素是:

Indices = [0, 3, 7] 

我怎样才能得到这个在Python?没有使用for-loops等。是否有内置函数,例如在numpy

谢谢你的帮助!

回答

6

这是numpy的做这件事的一种方法:

np.where(np.equal(Predictions, Labels)) 

这相当于:

np.equal(Predictions, Labels).nonzero() 

它将虽然返回一个元素的元组,因此要获得实际的数组,加[0]如:

np.equal(Predictions, Labels).nonzero()[0] 
+0

谢谢你的帮助=)欣赏它 – jjepsuomi

3

对于两个阵列a, b用:

a = np.array([1, 2, 3, 4, 5]) 
b = np.array([1, 3, 2, 4, 5]) 

np.equal(a,b)具有输出相同a==b(这是更容易理解,首先,我认为):

> array([ True, False, False, True, True], dtype=bool) 

的元件被检查逐元素,然后创建布尔值的阵列。

np.where()检查一些条件逐元素的数组:

np.where(a > 2) 
> (array([2, 3, 4]),) 

所以结合np.wherenp.equal是你想要的东西:

np.where(np.equal(a,b)) 
> (array([0, 3, 4]),) 

编辑:没关系,刚才看到我太慢了^^

+0

谢谢,感谢您的帮助:) – jjepsuomi

相关问题