大量の大量のnumpy配列で一致する要素を見つけようとしています。私がこれをやっているやり方(辞書の配列を保持し、それらを何度か繰り返している)は非常に遅く、問題に早く取り組む方法を探しています。あなたはそれが非常に悪い動作しますが、見ることができるように複数のnumpy配列で一致する要素を見つけるための速い方法
import numpy as np
data = {}
for frame in xrange(100):
data[frame] = np.random.randint(100, size=(100, 3))
# data structure is 100 'pages' each containing an array of 100 elements
# trying to find matching elements from arrays on different pages
for page in data:
for point in data[page]:
for page_to_match in data:
if page_to_match == page: # exclude matches on the same page
pass
else:
for point_to_match in data[page_to_match]:
if np.array_equal(point, point_to_match):
print 'Found a match -', point, '- pages:', page, page_to_match
# should find about 0 - 3 matches per page
:ここ
は、問題を提示し、コードの自己完結型の部分です。
編集:ここに最小限のコードがあります。このような小さな配列では素早く動作しますが、上記のような大きな配列ではゆっくりと動作します。以下に上記のセクションの最初の3行を置き換えます
data = {}
data[0] = np.array([[1,2],[3,4]])
data[1] = np.array([[5,6],[7,8]])
data[2] = np.array([[3,4],[5,8]])
あなたが望むものを正確に定義できますか? –
最小のサンプルケースを追加できますか? – Divakar
@ juanpa.arrivillaga私が望むのは、さらなる処理のためにページ間の一致を特定することです。 –