2015-11-28 93 views
1

我有兩個數組,我發現如何用np.setxor1d(a,b)來識別互斥元素。例如:在python中查找兩個數組之間的互斥元素索引

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] 

現在,我試圖找出如何獲得詳盡的陣列,ex的兩個ab元素的索引。以諸如a_mutex_indb_mutex_ind的方式。有沒有人知道一個聰明的方式來做到這一點,沒有for循環? 謝謝!

回答

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]) 
+0

完美!其中一個「我爲什麼沒有想到這個?」事 –

相關問題