@@ -220,14 +220,17 @@ def _get_compressed_triangulation(self):
220220 tri_mask = self ._triangulation .mask
221221 compressed_triangles = self ._triangulation .get_masked_triangles ()
222222 ntri = self ._triangulation .triangles .shape [0 ]
223- tri_renum = self ._total_to_compress_renum (tri_mask , ntri )
223+ if tri_mask is not None :
224+ tri_renum = self ._total_to_compress_renum (~ tri_mask )
225+ else :
226+ tri_renum = np .arange (ntri , dtype = np .int32 )
224227
225228 # Valid nodes and renumbering
226- node_mask = (np .bincount (np .ravel (compressed_triangles ),
227- minlength = self ._triangulation .x .size ) = = 0 )
228- compressed_x = self ._triangulation .x [~ node_mask ]
229- compressed_y = self ._triangulation .y [~ node_mask ]
230- node_renum = self ._total_to_compress_renum (node_mask )
229+ valid_node = (np .bincount (np .ravel (compressed_triangles ),
230+ minlength = self ._triangulation .x .size ) ! = 0 )
231+ compressed_x = self ._triangulation .x [valid_node ]
232+ compressed_y = self ._triangulation .y [valid_node ]
233+ node_renum = self ._total_to_compress_renum (valid_node )
231234
232235 # Now renumbering the valid triangles nodes
233236 compressed_triangles = node_renum [compressed_triangles ]
@@ -236,32 +239,25 @@ def _get_compressed_triangulation(self):
236239 node_renum )
237240
238241 @staticmethod
239- def _total_to_compress_renum (mask , n = None ):
242+ def _total_to_compress_renum (valid ):
240243 """
241244 Parameters
242245 ----------
243- mask : 1d bool array or None
244- mask
245- n : int
246- length of the mask. Useful only id mask can be None
246+ valid : 1d bool array
247+ Validity mask.
247248
248249 Returns
249250 -------
250251 int array
251- array so that (`valid_array` being a compressed array
252- based on a `masked_array` with mask *mask *):
252+ Array so that (`valid_array` being a compressed array
253+ based on a `masked_array` with mask ~*valid *):
253254
254- - For all i such as mask [i] = False :
255+ - For all i with valid [i] = True :
255256 valid_array[renum[i]] = masked_array[i]
256- - For all i such as mask [i] = True :
257+ - For all i with valid [i] = False :
257258 renum[i] = -1 (invalid value)
258259 """
259- if n is None :
260- n = np .size (mask )
261- if mask is not None :
262- renum = np .full (n , - 1 , dtype = np .int32 ) # Default num is -1
263- valid = np .arange (n , dtype = np .int32 )[~ mask ]
264- renum [valid ] = np .arange (np .size (valid , 0 ), dtype = np .int32 )
265- return renum
266- else :
267- return np .arange (n , dtype = np .int32 )
260+ renum = np .full (np .size (valid ), - 1 , dtype = np .int32 )
261+ n_valid = np .sum (valid )
262+ renum [valid ] = np .arange (n_valid , dtype = np .int32 )
263+ return renum
0 commit comments