長さの異なる2つの3D numpy配列の要素を比較したいと思います。目標は、2つの配列に重複する要素を見つけることです。異なる長さのnumpy配列の要素ごとの比較
私が今までに見つけたすべての機能は、同じ長さの2つの配列に依存しています。
2次元要素を効率的に比較する方法はありますか(各ループには何万もの要素があるため、ループは非常に非効率的です)。
長さの異なる2つの3D numpy配列の要素を比較したいと思います。目標は、2つの配列に重複する要素を見つけることです。異なる長さのnumpy配列の要素ごとの比較
私が今までに見つけたすべての機能は、同じ長さの2つの配列に依存しています。
2次元要素を効率的に比較する方法はありますか(各ループには何万もの要素があるため、ループは非常に非効率的です)。
intersect1d
は何ですか?あなたの配列はa
とb
ている場合たとえば、あなたは単に行うことができます:ここで
duplicates = np.intersect1d(a, b)
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),)
あなたが正確にやりたいことははっきりしません。小さい方の配列の長さが「n」で長さがmより大きい場合は、大きい方の配列の最初の 'n'要素と小さい方の配列のすべての要素を比較しますか? –
最初の配列のすべてのn要素と2番目の配列のすべてのm要素を比較したいと思います。つまり、 'm 'にも含まれている' n'の要素をすべて探したいのです – farnold
サンプルケースを追加しますか? – Divakar