在python中查找两个数组之间互斥元素的索引

时间:2015-11-28 19:44:32

标签: python arrays numpy indexing mutual-exclusion

我有两个数组,我已经找到了如何使用np.setxor1d(a,b)识别互斥元素。例如:

a = np.random.randint(11, size=10) #first array
b = np.random.randint(11, size=10) #second array
ex = np.setxor1d(a,b)              #mutually exclusive array

a
Out[1]: [1, 5, 3, 7, 6, 0, 10, 10, 0, 9]
b
Out[2]: [1, 9, 8, 6, 3, 5, 8, 0, 3, 10]
ex
Out[3]: [7, 8]

现在,我试图找出如何获取exa的独占数组b的元素的索引。以a_mutex_indb_mutex_ind等方式。有没有人知道一个聪明的方法来做这个没有for循环? 谢谢!

1 个答案:

答案 0 :(得分:1)

>>> x = np.setxor1d(a, b)
>>> i, = np.nonzero(np.in1d(a, x))
>>> i
array([3])
>>> a[i]
array([7])

,同样适用于b

>>> j, = np.nonzero(np.in1d(b, x))
>>> j
array([2, 6])
>>> b[j]
array([8, 8])