この問題を解決するためにチュートリアルなどを少し検索しましたが、何も見つからないようです。numpy配列をハッシュして重複をチェックする方法
私は、n次元のnumpy配列(いくつかの画像の3D配列形式)の2つのリストを持っており、各リスト内の重複する画像をチェックしたいと考えています。リストaはトレーニングセットであり、リストbは検証セットであると言います。 ネストされたループを使用して、配列の各ペアがnp.array(a[i], b[j])
を使用して等しいかどうかをチェックしますが、それは遅いです(各リストには約200,000個の配列があります)。
これを実現するよりエレガントな方法は、各リスト内のそれぞれのnumpy配列をハッシュし、これらのハッシュテーブルを使用して各エントリを比較することだと考えていました。
まず、この解決策は正しいですか。第2に、これを達成するにはどうすればいいですか?
一部のデータの例を以下に示します。
train_dataset[:3]
array([[[-0.5 , -0.49607843, -0.5 , ..., -0.5 ,
-0.49215686, -0.5 ],
[-0.49607843, -0.47647059, -0.5 , ..., -0.5 ,
-0.47254902, -0.49607843],
[-0.49607843, -0.49607843, -0.5 , ..., -0.5 ,
-0.49607843, -0.49607843],
...,
[-0.49607843, -0.49215686, -0.5 , ..., -0.5 ,
-0.49215686, -0.49607843],
[-0.49607843, -0.47647059, -0.5 , ..., -0.5 ,
-0.47254902, -0.49607843],
[-0.5 , -0.49607843, -0.5 , ..., -0.5 ,
-0.49607843, -0.5 ]],
[[-0.5 , -0.5 , -0.5 , ..., 0.48823529,
0.5 , 0.1509804 ],
[-0.5 , -0.5 , -0.5 , ..., 0.48431373,
0.14705883, -0.32745099],
[-0.5 , -0.5 , -0.5 , ..., -0.32745099,
-0.5 , -0.49607843],
...,
[-0.5 , -0.44901961, 0.1509804 , ..., -0.5 ,
-0.5 , -0.5 ],
[-0.49607843, -0.49607843, -0.49215686, ..., -0.5 ,
-0.5 , -0.5 ],
[-0.5 , -0.49607843, -0.48823529, ..., -0.5 ,
-0.5 , -0.5 ]],
[[-0.5 , -0.5 , -0.5 , ..., -0.5 ,
-0.5 , -0.5 ],
[-0.5 , -0.5 , -0.5 , ..., -0.5 ,
-0.5 , -0.5 ],
[-0.5 , -0.5 , -0.49607843, ..., -0.5 ,
-0.5 , -0.5 ],
...,
[-0.5 , -0.5 , -0.5 , ..., -0.48823529,
-0.5 , -0.5 ],
[-0.5 , -0.5 , -0.5 , ..., -0.5 ,
-0.5 , -0.5 ],
[-0.5 , -0.5 , -0.5 , ..., -0.5 ,
-0.5 , -0.5 ]]], dtype=float32)
私は事前に助けていただきありがとうございます。
あなたはペアワイズ比較して何をやったか、私たちに少しを表示します。この文脈で「嫌なこと」が何を意味するのか分かりません。 – hpaulj
最近のhttp://stackoverflow.com/questions/39674863/python-alternative-for-using-numpy-array-as-key-in-dictionaryを参照してください。また、一意の行またはソートされた行についての質問も見てください。基本的に私はこれをしようとしていた – hpaulj
: '重複= train_datasetで私のために[] : jのためのvalid_dataset中: duplicates.append(np.equal(i、j)が'の書式については申し訳ありません は、これらのコメントは奇妙です。 –