Üç değer içeren bu listelerin her biri ile birlikte 300.000 liste üzerinde çalışacak olan yuvalanmış bir döngüyü vectorize etmeyi arıyorum. Yuvalanmış döngü, listelerin her birinin değerlerini diğer listelerdeki karşılık gelen değerlerle karşılaştırır ve yalnızca aralarında 0.1 arasında bir maksimum farka sahip karşılık gelen değerlere sahip liste dizinlerini ekler. Bu nedenle, [0.234, 0.456, 0.567] ve [0.246, 0.479, 0.580] içeren bir liste, bu kategoriye girer, çünkü karşılık gelen değerleri (0.234 ve 0.246; 0.456 ve 0.479; 0.567 ve 0.580), farklıdır. aralarında 0.1'den az.İç içe geçmiş bir döngüyü vektörle eşleştirme
Şu anda bunu yapmak için aşağıdaki yuvalanmış döngüyü kullanıyorum, ancak şu an tamamlanması yaklaşık 58 saat sürecektir (toplam 90 trilyon yineleme);
import numpy as np
variable = np.random.random((300000,3)).tolist()
out1=list()
out2=list()
for i in range(0:300000):
for j in range(0:300000):
if ((i<j) and ((abs(variable[i][0]-variable[j][0]))<0.1) and ((abs(variable[i][1]-variable[j] [1]))<0.1) and ((abs(variable[i][2]-variable[j][2]))<0.1)):
out1.append(i)
out2.append(j)
Sizin 'variable', rastgele sadece örneğin, ya da sen aslında taklit edilir bir şey? – Julien
Evet, sadece örnek için - gerçekte, bahsettiğim eşiğe ait veriye sahip olan bir simülasyon yoluyla oluşturulan bir liste listem var. – JBorg