Exemple #1
0
    def __new__(cls,
                shape,
                dtype=None,
                buf=None,
                offset=0,
                strides=None,
                formats=None,
                names=None,
                titles=None,
                byteorder=None,
                aligned=False,
                mask=nomask,
                hard_mask=False,
                fill_value=None,
                keep_mask=True,
                copy=False,
                **options):

        self = recarray.__new__(
            cls,
            shape,
            dtype=dtype,
            buf=buf,
            offset=offset,
            strides=strides,
            formats=formats,
            names=names,
            titles=titles,
            byteorder=byteorder,
            aligned=aligned,
        )

        mdtype = ma.make_mask_descr(self.dtype)
        if mask is nomask or not np.size(mask):
            if not keep_mask:
                self._mask = tuple([False] * len(mdtype))
        else:
            mask = np.array(mask, copy=copy)
            if mask.shape != self.shape:
                (nd, nm) = (self.size, mask.size)
                if nm == 1:
                    mask = np.resize(mask, self.shape)
                elif nm == nd:
                    mask = np.reshape(mask, self.shape)
                else:
                    msg = "Mask and data not compatible: data size is %i, " + \
                          "mask size is %i."
                    raise MAError(msg % (nd, nm))
                copy = True
            if not keep_mask:
                self.__setmask__(mask)
                self._sharedmask = True
            else:
                if mask.dtype == mdtype:
                    _mask = mask
                else:
                    _mask = np.array([tuple([m] * len(mdtype)) for m in mask],
                                     dtype=mdtype)
                self._mask = _mask
        return self
Exemple #2
0
 def __new__(
     cls,
     shape,
     dtype=None,
     buf=None,
     offset=0,
     strides=None,
     formats=None,
     names=None,
     titles=None,
     byteorder=None,
     aligned=False,
     mask=nomask,
     hard_mask=False,
     fill_value=None,
     keep_mask=True,
     copy=False,
     **options
 ):
     #
     self = recarray.__new__(
         cls,
         shape,
         dtype=dtype,
         buf=buf,
         offset=offset,
         strides=strides,
         formats=formats,
         names=names,
         titles=titles,
         byteorder=byteorder,
         aligned=aligned,
     )
     #
     mdtype = ma.make_mask_descr(self.dtype)
     if mask is nomask or not np.size(mask):
         if not keep_mask:
             self._mask = tuple([False] * len(mdtype))
     else:
         mask = np.array(mask, copy=copy)
         if mask.shape != self.shape:
             (nd, nm) = (self.size, mask.size)
             if nm == 1:
                 mask = np.resize(mask, self.shape)
             elif nm == nd:
                 mask = np.reshape(mask, self.shape)
             else:
                 msg = "Mask and data not compatible: data size is %i, " + "mask size is %i."
                 raise MAError(msg % (nd, nm))
             copy = True
         if not keep_mask:
             self.__setmask__(mask)
             self._sharedmask = True
         else:
             if mask.dtype == mdtype:
                 _mask = mask
             else:
                 _mask = np.array([tuple([m] * len(mdtype)) for m in mask], dtype=mdtype)
             self._mask = _mask
     return self