@@ -383,6 +383,29 @@ def obs_dimension(cls, handler):
383383 if candidate in handler .dimensions .keys ():
384384 return candidate
385385
386+ def remove_fields (self , * fields ):
387+ """
388+ Copy with fields listed remove
389+ """
390+ nb_obs = self .obs .shape [0 ]
391+ fields = set (fields )
392+ only_variables = set (self .obs .dtype .names ) - fields
393+ track_extra_variables = set (self .track_extra_variables ) - fields
394+ array_variables = set (self .array_variables ) - fields
395+ new = self .__class__ (
396+ size = nb_obs ,
397+ track_extra_variables = track_extra_variables ,
398+ track_array_variables = self .track_array_variables ,
399+ array_variables = array_variables ,
400+ only_variables = only_variables ,
401+ raw_data = self .raw_data ,
402+ )
403+ new .sign_type = self .sign_type
404+ for name in new .obs .dtype .names :
405+ logger .debug ("Copy of field %s ..." , name )
406+ new .obs [name ] = self .obs [name ]
407+ return new
408+
386409 def add_fields (self , fields = list (), array_fields = list ()):
387410 """
388411 Add a new field.
@@ -401,10 +424,9 @@ def add_fields(self, fields=list(), array_fields=list()):
401424 raw_data = self .raw_data ,
402425 )
403426 new .sign_type = self .sign_type
404- for field in self .obs .dtype .descr :
405- logger .debug ("Copy of field %s ..." , field )
406- var = field [0 ]
407- new .obs [var ] = self .obs [var ]
427+ for name in self .obs .dtype .names :
428+ logger .debug ("Copy of field %s ..." , name )
429+ new .obs [name ] = self .obs [name ]
408430 return new
409431
410432 def add_rotation_type (self ):
0 commit comments