Constants of the module

In addition to the MaskedArray class, the module defines several constants.

The masked constant is a special case of MaskedArray, with a float datatype and a null shape. It is used to test whether a specific entry of a masked array is masked, or to mask one or several entries of a masked array:

>>> x = ma.array([1, 2, 3], mask=[0, 1, 0])
>>> x[1] is ma.masked
>>> x[-1] = ma.masked
>>> x
masked_array(data = [1 -- --],
             mask = [False  True  True],
       fill_value = 999999)

Value indicating that a masked array has no invalid entry. nomask is used internally to speed up computations when the mask is not needed.

String used in lieu of missing data when a masked array is printed. By default, this string is '--'.

The MaskedArray class

A subclass of ndarray designed to manipulate numerical arrays with missing data.

An instance of MaskedArray can be thought as the combination of several elements:

  • The data, as a regular numpy.ndarray of any shape or datatype (the data).
  • A boolean mask with the same shape as the data, where a True value indicates that the corresponding element of the data is invalid. The special value nomask is also acceptable for arrays without named fields, and indicates that no data is invalid.
  • A fill_value, a value that may be used to replace the invalid entries in order to return a standard numpy.ndarray.

Attributes and properties of masked arrays

See also

Array Attributes

Returns the underlying data, as a view of the masked array. If the underlying data is a subclass of numpy.ndarray, it is returned as such.

>>> x = ma.array(np.matrix([[1, 2], [3, 4]]), mask=[[0, 1], [1, 0]])
matrix([[1, 2],
        [3, 4]])

The type of the data can be accessed through the baseclass attribute.


Returns the underlying mask, as an array with the same shape and structure as the data, but where all fields are atomically booleans. A value of True indicates an invalid entry.


Returns the mask of the array if it has no named fields. For structured arrays, returns a ndarray of booleans where entries are True if all the fields are masked, False otherwise:

>>> x = ma.array([(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)],
...         mask=[(0, 0), (1, 0), (1, 1), (0, 1), (0, 0)],
...        dtype=[('a', int), ('b', int)])
>>> x.recordmask
array([False, False,  True, False, False], dtype=bool)

Returns the value used to fill the invalid entries of a masked array. The value is either a scalar (if the masked array has no named fields), or a 0-D ndarray with the same dtype as the masked array if it has named fields.

The default filling value depends on the datatype of the array:

datatype default
bool True
int 999999
float 1.e20
complex 1.e20+0j
object ‘?’
string ‘N/A’

Returns the class of the underlying data.

>>> x =  ma.array(np.matrix([[1, 2], [3, 4]]), mask=[[0, 0], [1, 0]])
>>> x.baseclass
<class 'numpy.matrixlib.defmatrix.matrix'>

Returns whether the mask of the array is shared between several masked arrays. If this is the case, any modification to the mask of one array will be propagated to the others.


Returns whether the mask is hard (True) or soft (False). When the mask is hard, masked entries cannot be unmasked.

As MaskedArray is a subclass of ndarray, a masked array also inherits all the attributes and properties of a ndarray instance.

MaskedArray.base Base object if memory is from some other object.
MaskedArray.ctypes An object to simplify the interaction of the array with the ctypes module.
MaskedArray.dtype Data-type of the array’s elements.
MaskedArray.flags Information about the memory layout of the array.
MaskedArray.itemsize Length of one array element in bytes.
MaskedArray.nbytes Total bytes consumed by the elements of the array.
MaskedArray.ndim Number of array dimensions.
MaskedArray.shape Tuple of array dimensions.
MaskedArray.size Number of elements in the array.
MaskedArray.strides Tuple of bytes to step in each dimension when traversing an array.
MaskedArray.imag Imaginary part.
MaskedArray.real Real part
MaskedArray.flat Flat version of the array.

MaskedArray methods

See also

Array methods


MaskedArray.__float__() Convert to float.
MaskedArray.__hex__() <==> hex(x)
MaskedArray.__int__() Convert to int.
MaskedArray.__long__() <==> long(x)
MaskedArray.__oct__() <==> oct(x)
MaskedArray.view([dtype, type]) New view of array with the same data.
MaskedArray.astype(newtype) Returns a copy of the MaskedArray cast to given newtype.
MaskedArray.byteswap(inplace) Swap the bytes of the array elements
MaskedArray.compressed() Return all the non-masked data as a 1-D array.
MaskedArray.filled([fill_value]) Return a copy of self, with masked values filled with a given value.
MaskedArray.tofile(fid[, sep, format]) Save a masked array to a file in binary format.
MaskedArray.toflex() Transforms a masked array into a flexible-type array.
MaskedArray.tolist([fill_value]) Return the data portion of the masked array as a hierarchical Python list.
MaskedArray.torecords() Transforms a masked array into a flexible-type array.
MaskedArray.tostring([fill_value, order]) This function is a compatibility alias for tobytes.
MaskedArray.tobytes([fill_value, order]) Return the array data as a string containing the raw bytes in the array.

Shape manipulation

For reshape, resize, and transpose, the single tuple argument may be replaced with n integers which will be interpreted as an n-tuple.

MaskedArray.flatten([order]) Return a copy of the array collapsed into one dimension.
MaskedArray.ravel([order]) Returns a 1D version of self, as a view.
MaskedArray.reshape(*s, **kwargs) Give a new shape to the array without changing its data.
MaskedArray.resize(newshape[, refcheck, order])
MaskedArray.squeeze([axis]) Remove single-dimensional entries from the shape of a.
MaskedArray.swapaxes(axis1, axis2) Return a view of the array with axis1 and axis2 interchanged.
MaskedArray.transpose(*axes) Returns a view of the array with axes transposed.

Item selection and manipulation

For array methods that take an axis keyword, it defaults to None. If axis is None, then the array is treated as a 1-D array. Any other value for axis represents the dimension along which the operation should proceed.

MaskedArray.argmax([axis, fill_value, out]) Returns array of indices of the maximum values along the given axis.
MaskedArray.argmin([axis, fill_value, out]) Return array of indices to the minimum values along the given axis.
MaskedArray.argsort([axis, kind, order, ...]) Return an ndarray of indices that sort the array along the specified axis.
MaskedArray.choose(choices[, out, mode]) Use an index array to construct a new array from a set of choices.
MaskedArray.compress(condition[, axis, out]) Return a where condition is True.
MaskedArray.diagonal([offset, axis1, axis2]) Return specified diagonals.
MaskedArray.fill(value) Fill the array with a scalar value.
MaskedArray.item(*args) Copy an element of an array to a standard Python scalar and return it.
MaskedArray.nonzero() Return the indices of unmasked elements that are not zero.
MaskedArray.put(indices, values[, mode]) Set storage-indexed locations to corresponding values.
MaskedArray.repeat(repeats[, axis]) Repeat elements of an array.
MaskedArray.searchsorted(v[, side, sorter]) Find indices where elements of v should be inserted in a to maintain order.
MaskedArray.sort([axis, kind, order, ...]) Sort the array, in-place
MaskedArray.take(indices[, axis, out, mode])

Pickling and copy

MaskedArray.copy([order]) Return a copy of the array.
MaskedArray.dump(file) Dump a pickle of the array to the specified file.
MaskedArray.dumps() Returns the pickle of the array as a string.


MaskedArray.all([axis, out, keepdims]) Returns True if all elements evaluate to True.
MaskedArray.anom([axis, dtype]) Compute the anomalies (deviations from the arithmetic mean) along the given axis.
MaskedArray.any([axis, out, keepdims]) Returns True if any of the elements of a evaluate to True.
MaskedArray.clip([min, max, out]) Return an array whose values are limited to [min, max].
MaskedArray.conj() Complex-conjugate all elements.
MaskedArray.conjugate() Return the complex conjugate, element-wise.
MaskedArray.cumprod([axis, dtype, out]) Return the cumulative product of the array elements over the given axis.
MaskedArray.cumsum([axis, dtype, out]) Return the cumulative sum of the array elements over the given axis.
MaskedArray.max([axis, out, fill_value, ...]) Return the maximum along a given axis.
MaskedArray.mean([axis, dtype, out, keepdims]) Returns the average of the array elements along given axis.
MaskedArray.min([axis, out, fill_value, ...]) Return the minimum along a given axis.[axis, dtype, out, keepdims]) Return the product of the array elements over the given axis.
MaskedArray.product([axis, dtype, out, keepdims]) Return the product of the array elements over the given axis.
MaskedArray.ptp([axis, out, fill_value]) Return (maximum - minimum) along the given dimension (i.e.
MaskedArray.round([decimals, out]) Return each element rounded to the given number of decimals.
MaskedArray.std([axis, dtype, out, ddof, ...]) Returns the standard deviation of the array elements along given axis.
MaskedArray.sum([axis, dtype, out, keepdims]) Return the sum of the array elements over the given axis.
MaskedArray.trace([offset, axis1, axis2, ...]) Return the sum along diagonals of the array.
MaskedArray.var([axis, dtype, out, ddof, ...]) Compute the variance along the specified axis.

Arithmetic and comparison operations

Comparison operators:

MaskedArray.__lt__ x.__lt__(y) <==> x<y
MaskedArray.__le__ x.__le__(y) <==> x<=y
MaskedArray.__gt__ x.__gt__(y) <==> x>y
MaskedArray.__ge__ x.__ge__(y) <==> x>=y
MaskedArray.__eq__(other) Check whether other equals self elementwise.
MaskedArray.__ne__(other) Check whether other doesn’t equal self elementwise

Truth value of an array (bool):

MaskedArray.__nonzero__ x.__nonzero__() <==> x != 0


MaskedArray.__abs__() <==> abs(x)
MaskedArray.__add__(other) Add self to other, and return a new masked array.
MaskedArray.__radd__(other) Add other to self, and return a new masked array.
MaskedArray.__sub__(other) Subtract other from self, and return a new masked array.
MaskedArray.__rsub__(other) Subtract self from other, and return a new masked array.
MaskedArray.__mul__(other) Multiply self by other, and return a new masked array.
MaskedArray.__rmul__(other) Multiply other by self, and return a new masked array.
MaskedArray.__div__(other) Divide other into self, and return a new masked array.
MaskedArray.__rdiv__ x.__rdiv__(y) <==> y/x
MaskedArray.__truediv__(other) Divide other into self, and return a new masked array.
MaskedArray.__rtruediv__(other) Divide self into other, and return a new masked array.
MaskedArray.__floordiv__(other) Divide other into self, and return a new masked array.
MaskedArray.__rfloordiv__(other) Divide self into other, and return a new masked array.
MaskedArray.__mod__ x.__mod__(y) <==> x%y
MaskedArray.__rmod__ x.__rmod__(y) <==> y%x
MaskedArray.__divmod__(y) <==> divmod(x, y)
MaskedArray.__rdivmod__(y) <==> divmod(y, x)
MaskedArray.__pow__(other) Raise self to the power other, masking the potential NaNs/Infs
MaskedArray.__rpow__(other) Raise other to the power self, masking the potential NaNs/Infs
MaskedArray.__lshift__ x.__lshift__(y) <==> x<<y
MaskedArray.__rlshift__ x.__rlshift__(y) <==> y<<x
MaskedArray.__rshift__ x.__rshift__(y) <==> x>>y
MaskedArray.__rrshift__ x.__rrshift__(y) <==> y>>x
MaskedArray.__and__ x.__and__(y) <==> x&y
MaskedArray.__rand__ x.__rand__(y) <==> y&x
MaskedArray.__or__ x.__or__(y) <==> x|y
MaskedArray.__ror__ x.__ror__(y) <==> y|x
MaskedArray.__xor__ x.__xor__(y) <==> x^y
MaskedArray.__rxor__ x.__rxor__(y) <==> y^x

Arithmetic, in-place:

MaskedArray.__iadd__(other) Add other to self in-place.
MaskedArray.__isub__(other) Subtract other from self in-place.
MaskedArray.__imul__(other) Multiply self by other in-place.
MaskedArray.__idiv__(other) Divide self by other in-place.
MaskedArray.__itruediv__(other) True divide self by other in-place.
MaskedArray.__ifloordiv__(other) Floor divide self by other in-place.
MaskedArray.__imod__ x.__imod__(y) <==> x%=y
MaskedArray.__ipow__(other) Raise self to the power other, in place.
MaskedArray.__ilshift__ x.__ilshift__(y) <==> x<<=y
MaskedArray.__irshift__ x.__irshift__(y) <==> x>>=y
MaskedArray.__iand__ x.__iand__(y) <==> x&=y
MaskedArray.__ior__ x.__ior__(y) <==> x|=y
MaskedArray.__ixor__ x.__ixor__(y) <==> x^=y


MaskedArray.__repr__() Literal string representation.
MaskedArray.__str__() String representation.
MaskedArray.ids() Return the addresses of the data and mask areas.
MaskedArray.iscontiguous() Return a boolean indicating whether the data is contiguous.

Special methods

For standard library functions:

MaskedArray.__copy__([order]) Return a copy of the array.
MaskedArray.__getstate__() Return the internal state of the masked array, for pickling purposes.
MaskedArray.__reduce__() Return a 3-tuple for pickling a MaskedArray.
MaskedArray.__setstate__(state) Restore the internal state of the masked array, for pickling purposes.

Basic customization:

MaskedArray.__new__([data, mask, dtype, ...]) Create a new masked array from scratch.
MaskedArray.__array__(...) Returns either a new reference to self if dtype is not given or a new array of provided data type if dtype is different from the current dtype of the array.
MaskedArray.__array_wrap__(obj[, context]) Special hook for ufuncs.

Container customization: (see Indexing)

MaskedArray.__len__() <==> len(x)
MaskedArray.__getitem__(indx) x.__getitem__(y) <==> x[y]
MaskedArray.__setitem__(indx, value) x.__setitem__(i, y) <==> x[i]=y
MaskedArray.__delitem__ x.__delitem__(y) <==> del x[y]
MaskedArray.__getslice__(i, j) x.__getslice__(i, j) <==> x[i:j]
MaskedArray.__setslice__(i, j, value) x.__setslice__(i, j, value) <==> x[i:j]=value
MaskedArray.__contains__ x.__contains__(y) <==> y in x

Specific methods

Handling the mask

The following methods can be used to access information about the mask or to manipulate the mask.

MaskedArray.__setmask__(mask[, copy]) Set the mask.
MaskedArray.harden_mask() Force the mask to hard.
MaskedArray.soften_mask() Force the mask to soft.
MaskedArray.unshare_mask() Copy the mask and set the sharedmask flag to False.
MaskedArray.shrink_mask() Reduce a mask to nomask when possible.

Handling the fill_value

MaskedArray.get_fill_value() Return the filling value of the masked array.
MaskedArray.set_fill_value([value]) Set the filling value of the masked array.

Counting the missing elements

MaskedArray.count([axis, keepdims]) Count the non-masked elements of the array along the given axis.