入れ子にされたループをベクトル化することを検討しています。これは300,000個のリストのリストで動作し、これらのリストのそれぞれに3つの値が含まれています。ネストされたループは、各リストの値を他のリストの対応する値と比較し、最大差0.1の対応する値を持つリストインデックスのみを追加します。したがって、[0.234,0.456,0.567]を含むリストと、[0.246,0.479,0.580]を含むリストは、対応する値(すなわち、0.234と0.246; 0.456と0.479; 0.567と0.580)は、 0.1未満である。入れ子のループをベクトル化する
私は現在、以下のネストループを使用していますが、現在は約58時間かかります(合計90兆回の反復)。
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)
あなたの '変数'はランダムです、実際には何かをシミュレートしていますか? – Julien
はい、これは単なる例です。実際には、シミュレーションで生成されたリストのリストを持っています。 – JBorg