@@ -383,6 +383,29 @@ def obs_dimension(cls, handler):
383
383
if candidate in handler .dimensions .keys ():
384
384
return candidate
385
385
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
+
386
409
def add_fields (self , fields = list (), array_fields = list ()):
387
410
"""
388
411
Add a new field.
@@ -401,10 +424,9 @@ def add_fields(self, fields=list(), array_fields=list()):
401
424
raw_data = self .raw_data ,
402
425
)
403
426
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 ]
408
430
return new
409
431
410
432
def add_rotation_type (self ):
0 commit comments