2016-04-13 11 views
0

長さの異なる2つの3D numpy配列の要素を比較したいと思います。目標は、2つの配列に重複する要素を見つけることです。異なる長さのnumpy配列の要素ごとの比較

私が今までに見つけたすべての機能は、同じ長さの2つの配列に依存しています。

2次元要素を効率的に比較する方法はありますか(各ループには何万もの要素があるため、ループは非常に非効率的です)。

+0

あなたが正確にやりたいことははっきりしません。小さい方の配列の長さが「n」で長さがmより大きい場合は、大きい方の配列の最初の 'n'要素と小さい方の配列のすべての要素を比較しますか? –

+0

最初の配列のすべてのn要素と2番目の配列のすべてのm要素を比較したいと思います。つまり、 'm 'にも含まれている' n'の要素をすべて探したいのです – farnold

+1

サンプルケースを追加しますか? – Divakar

答えて

0

intersect1dは何ですか?あなたの配列はabている場合たとえば、あなたは単に行うことができます:ここで

duplicates = np.intersect1d(a, b) 
0

2つの1dの配列を比較するいくつかの方法:

In [325]: n=np.arange(0,10) 
In [326]: m=np.arange(3,9) 

In [327]: np.in1d(n,m) 
Out[327]: array([False, False, False, True, True, True, True, True, True, False], dtype=bool) 

In [328]: np.in1d(m,n) 
Out[328]: array([ True, True, True, True, True, True], dtype=bool) 

In [329]: n[:,None]==m[None,:] 
Out[329]: 
array([[False, False, False, False, False, False], 
     [False, False, False, False, False, False], 
     [False, False, False, False, False, False], 
     [ True, False, False, False, False, False], 
     [False, True, False, False, False, False], 
     [False, False, True, False, False, False], 
     [False, False, False, True, False, False], 
     [False, False, False, False, True, False], 
     [False, False, False, False, False, True], 
     [False, False, False, False, False, False]], dtype=bool) 

farenorthの提案

In [330]: np.intersect1d(n,m) 
Out[330]: array([3, 4, 5, 6, 7, 8]) 

In [331]: np.where(np.in1d(n,m)) 
Out[331]: (array([3, 4, 5, 6, 7, 8], dtype=int64),) 
関連する問題