0

ネストされたループを含むこの関数があります。コードをより高速に実行するには、並列化する必要があります。

def euclid_distance(X,BOW_X):
     d3=[]
     d2=[]

     for l in range(len(X)):
         for n in range(l+1,len(X)):
             d1=[]
             for m in range(len(X[l])):
                 min1=999
                 p=0
                 while(p<len(X[n])):
                     d=scipy.spatial.distance.euclidean(X[l][m],X[n][p])
                     d=d*numpy.min([BOW_X[l][m],BOW_X[n][p]])
                     if(d<min1):
                         min1=d
                     if(min1==0):
                         break
                     p+=1
                 d1.append(min1)

             d2.append(d1)

     for i in range(len(d2)):
         d3.append(sum(d2[i]))


return (d3)

これを行う方法はありますか X は、ベクトルを含むリストのリストを含む配列です。

4

2 に答える 2

0

range の代わりに xrange を使ってみましたか? より高速な実行に役立つ場合があります。(これはコメントにあるはずですが、まだロックを解除していません。申し訳ありません)

于 2016-10-20T09:56:08.870 に答える