@@ -69,15 +69,11 @@ def _calc_closeness_criterion(self, c1, c2):
6969        c1_min  =  min (c1 )
7070        c2_min  =  min (c2 )
7171
72-         D1  =  [min ([np .linalg .norm (c1_max  -  ic1 ),
73-                    np .linalg .norm (ic1  -  c1_min )]) for  ic1  in  c1 ]
74-         D2  =  [min ([np .linalg .norm (c2_max  -  ic2 ),
75-                    np .linalg .norm (ic2  -  c2_min )]) for  ic2  in  c2 ]
76- 
77-         beta  =  0 
78-         for  i , _  in  enumerate (D1 ):
79-             d  =  max (min ([D1 [i ], D2 [i ]]), self .min_dist_of_closeness_criteria )
80-             beta  +=  (1.0  /  d )
72+         # Vectorization 
73+         D1  =  np .minimum (c1_max  -  c1 , c1  -  c1_min )
74+         D2  =  np .minimum (c2_max  -  c2 , c2  -  c2_min )
75+         d  =  np .maximum (np .minimum (D1 , D2 ), self .min_dist_of_closeness_criteria )
76+         beta  =  (1.0  /  d ).sum ()
8177
8278        return  beta 
8379
@@ -88,26 +84,13 @@ def _calc_variance_criterion(c1, c2):
8884        c1_min  =  min (c1 )
8985        c2_min  =  min (c2 )
9086
91-         D1  =  [min ([np .linalg .norm (c1_max  -  ic1 ),
92-                    np .linalg .norm (ic1  -  c1_min )]) for  ic1  in  c1 ]
93-         D2  =  [min ([np .linalg .norm (c2_max  -  ic2 ),
94-                    np .linalg .norm (ic2  -  c2_min )]) for  ic2  in  c2 ]
95- 
96-         E1 , E2  =  [], []
97-         for  (d1 , d2 ) in  zip (D1 , D2 ):
98-             if  d1  <  d2 :
99-                 E1 .append (d1 )
100-             else :
101-                 E2 .append (d2 )
102- 
103-         V1  =  0.0 
104-         if  E1 :
105-             V1  =  -  np .var (E1 )
106- 
107-         V2  =  0.0 
108-         if  E2 :
109-             V2  =  -  np .var (E2 )
110- 
87+         # Vectorization 
88+         D1  =  np .minimum (c1_max  -  c1 , c1  -  c1_min )
89+         D2  =  np .minimum (c2_max  -  c2 , c2  -  c2_min )
90+         E1  =  D1 [D1  <  D2 ]
91+         E2  =  D2 [D1  >=  D2 ]
92+         V1  =  -  np .var (E1 ) if  len (E1 ) >  0  else  0. 
93+         V2  =  -  np .var (E2 ) if  len (E2 ) >  0  else  0. 
11194        gamma  =  V1  +  V2 
11295
11396        return  gamma 
0 commit comments