(cls, shape, dtype=None, buf=None, offset=0, strides=None,
formats=None, names=None, titles=None,
byteorder=None, aligned=False,
mask=ma.nomask, hard_mask=False, fill_value=None, keep_mask=True,
copy=False,
**options)
| 92 | """ |
| 93 | |
| 94 | def __new__(cls, shape, dtype=None, buf=None, offset=0, strides=None, |
| 95 | formats=None, names=None, titles=None, |
| 96 | byteorder=None, aligned=False, |
| 97 | mask=ma.nomask, hard_mask=False, fill_value=None, keep_mask=True, |
| 98 | copy=False, |
| 99 | **options): |
| 100 | |
| 101 | self = np.recarray.__new__(cls, shape, dtype=dtype, buf=buf, offset=offset, |
| 102 | strides=strides, formats=formats, names=names, |
| 103 | titles=titles, byteorder=byteorder, |
| 104 | aligned=aligned,) |
| 105 | |
| 106 | mdtype = ma.make_mask_descr(self.dtype) |
| 107 | if mask is ma.nomask or not np.size(mask): |
| 108 | if not keep_mask: |
| 109 | self._mask = tuple([False] * len(mdtype)) |
| 110 | else: |
| 111 | mask = np.array(mask, copy=copy) |
| 112 | if mask.shape != self.shape: |
| 113 | (nd, nm) = (self.size, mask.size) |
| 114 | if nm == 1: |
| 115 | mask = np.resize(mask, self.shape) |
| 116 | elif nm == nd: |
| 117 | mask = np.reshape(mask, self.shape) |
| 118 | else: |
| 119 | msg = (f"Mask and data not compatible: data size is {nd}," |
| 120 | " mask size is {nm}.") |
| 121 | raise ma.MAError(msg) |
| 122 | if not keep_mask: |
| 123 | self.__setmask__(mask) |
| 124 | self._sharedmask = True |
| 125 | else: |
| 126 | if mask.dtype == mdtype: |
| 127 | _mask = mask |
| 128 | else: |
| 129 | _mask = np.array([tuple([m] * len(mdtype)) for m in mask], |
| 130 | dtype=mdtype) |
| 131 | self._mask = _mask |
| 132 | return self |
| 133 | |
| 134 | def __array_finalize__(self, obj): |
| 135 | # Make sure we have a _fieldmask by default |
no test coverage detected