@@ -253,12 +253,7 @@ def get_domain(self, domain, data):
253253 if place == Place .skip :
254254 continue
255255
256- if orig_plc == Place .meta :
257- col_data = data [:, orig_var ].metas
258- elif orig_plc == Place .class_var :
259- col_data = data [:, orig_var ].Y .reshape (- 1 , 1 )
260- else :
261- col_data = data [:, orig_var ].X
256+ col_data = self ._get_column (data , orig_var , orig_plc )
262257 is_sparse = sp .issparse (col_data )
263258 if name == orig_var .name and tpe == type (orig_var ):
264259 var = orig_var
@@ -292,6 +287,16 @@ def get_domain(self, domain, data):
292287 domain = Domain (* places )
293288 return domain , [X , Y , m ]
294289
290+ def _get_column (self , data , source_var , source_place ):
291+ """ Extract column from data and preserve sparsity. """
292+ if source_place == Place .meta :
293+ col_data = data [:, source_var ].metas
294+ elif source_place == Place .class_var :
295+ col_data = data [:, source_var ].Y .reshape (- 1 , 1 )
296+ else :
297+ col_data = data [:, source_var ].X
298+ return col_data
299+
295300 def set_domain (self , domain ):
296301 self .variables = self .parse_domain (domain )
297302
0 commit comments