2014-03-24 47 views
1

這涉及到我剛纔的問題:Elementwise logical comparison of numpy arrays測試,如果在numpy的陣列行是相同的一個給定的行或不同的每個元素

我有隨機整數兩個numpy的陣列

A=np.random.randint(Q,size=(N,M)) 
B=np.random.randint(Q,size=(1,M)) 

我需要測試,如果在任何一箇中的行的具有大於0且小於M共同的元件用B.

例如如果的elementwise

A=np.array([[2,0],[0,1],[1,2]]) 
B=np.array([1,0]) 

我期望True因爲[1,0][1,2]共享0以上和小於2元素elemenwise。

在如果

B=np.array([2,0]) 

我希望False,因爲只有這CHARE 2種或0元素的elementwise

目前我的做法是行另一方面:

c=np.where((A[:]==B))[0] 
n=np.bincount(c) 
((n==0)+(n==2)).all() 

對我來說,這似乎是一個複雜的測試方式,我想知道是否有更自然的方式,我失蹤了。

回答

1

我會做這樣的

neq=(A==B).sum(-1) 
result = any(logical_and(neq<B.size, neq>0)) 

其中neq跟蹤的A每行多少位有共同點B

相關問題