MCPcopy Create free account
hub / github.com/numpy/numpy / addfield

Function addfield

numpy/ma/mrecords.py:749–783  ·  view source on GitHub ↗

Adds a new field to the masked record array Uses `newfield` as data and `newfieldname` as name. If `newfieldname` is None, the new field name is set to 'fi', where `i` is the number of existing fields.

(mrecord, newfield, newfieldname=None)

Source from the content-addressed store, hash-verified

747
748
749def addfield(mrecord, newfield, newfieldname=None):
750 """Adds a new field to the masked record array
751
752 Uses `newfield` as data and `newfieldname` as name. If `newfieldname`
753 is None, the new field name is set to 'fi', where `i` is the number of
754 existing fields.
755
756 """
757 _data = mrecord._data
758 _mask = mrecord._mask
759 if newfieldname is None or newfieldname in reserved_fields:
760 newfieldname = 'f%i' % len(_data.dtype)
761 newfield = ma.array(newfield)
762 # Get the new data.
763 # Create a new empty recarray
764 newdtype = np.dtype(_data.dtype.descr + [(newfieldname, newfield.dtype)])
765 newdata = recarray(_data.shape, newdtype)
766 # Add the existing field
767 [newdata.setfield(_data.getfield(*f), *f)
768 for f in _data.dtype.fields.values()]
769 # Add the new field
770 newdata.setfield(newfield._data, *newdata.dtype.fields[newfieldname])
771 newdata = newdata.view(MaskedRecords)
772 # Get the new mask
773 # Create a new empty recarray
774 newmdtype = np.dtype([(n, bool_) for n in newdtype.names])
775 newmask = recarray(_data.shape, newmdtype)
776 # Add the old masks
777 [newmask.setfield(_mask.getfield(*f), *f)
778 for f in _mask.dtype.fields.values()]
779 # Add the mask of the new field
780 newmask.setfield(getmaskarray(newfield),
781 *newmask.dtype.fields[newfieldname])
782 newdata._mask = newmask
783 return newdata

Callers 1

test_addfieldMethod · 0.90

Calls 5

recarrayClass · 0.90
getmaskarrayFunction · 0.90
valuesMethod · 0.80
dtypeMethod · 0.45
viewMethod · 0.45

Tested by 1

test_addfieldMethod · 0.72