我在Python中有两个向量:Predictions
和Labels
。我想要做的是找出这两个向量具有相同元素的索引集。例如,假设向量是:
Predictions = [4, 2, 5, 8, 3, 4, 2, 2]
Labels = [4, 3, 4, 8, 2, 2, 1, 2]
因此两个向量具有相同元素的索引集将是:
Indices = [0, 3, 7]
我怎样才能在Python中获得这个?不使用for循环等。numpy
中是否有内置函数?
感谢您的帮助!
答案 0 :(得分:6)
这是用numpy做的一种方法:
np.where(np.equal(Predictions, Labels))
相当于:
np.equal(Predictions, Labels).nonzero()
它将返回单个元素元组,因此要获取实际数组,请添加[0]
,如下所示:
np.equal(Predictions, Labels).nonzero()[0]
答案 1 :(得分: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.where
和np.equal
就是你想要的东西:
np.where(np.equal(a,b))
> (array([0, 3, 4]),)
编辑:没关系,只是看到我太慢了^^