summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
authorBas van Beek <b.f.van.beek@vu.nl>2021-05-04 02:05:39 +0200
committerBas van Beek <b.f.van.beek@vu.nl>2021-05-05 02:25:40 +0200
commit13b30e94cce1cdd314395c25d74bfe693c835910 (patch)
treee59cc04547e93e726f837cd084b02af40f4aad27 /numpy
parenta59973902c6706cfc4e6958e69e9a9b33db333fb (diff)
downloadnumpy-13b30e94cce1cdd314395c25d74bfe693c835910.tar.gz
ENH: Add improved placeholder annotations for `np.ma`
Diffstat (limited to 'numpy')
-rw-r--r--numpy/ma/__init__.pyi451
-rw-r--r--numpy/ma/core.pyi468
-rw-r--r--numpy/ma/extras.pyi84
-rw-r--r--numpy/ma/mrecords.pyi88
4 files changed, 867 insertions, 224 deletions
diff --git a/numpy/ma/__init__.pyi b/numpy/ma/__init__.pyi
index 16e026272..a9a833e52 100644
--- a/numpy/ma/__init__.pyi
+++ b/numpy/ma/__init__.pyi
@@ -2,228 +2,231 @@ from typing import Any, List
from numpy.ma import extras as extras
-__all__: List[str]
+from numpy.ma.core import (
+ MAError as MAError,
+ MaskError as MaskError,
+ MaskType as MaskType,
+ MaskedArray as MaskedArray,
+ abs as abs,
+ absolute as absolute,
+ add as add,
+ all as all,
+ allclose as allclose,
+ allequal as allequal,
+ alltrue as alltrue,
+ amax as amax,
+ amin as amin,
+ angle as angle,
+ anom as anom,
+ anomalies as anomalies,
+ any as any,
+ append as append,
+ arange as arange,
+ arccos as arccos,
+ arccosh as arccosh,
+ arcsin as arcsin,
+ arcsinh as arcsinh,
+ arctan as arctan,
+ arctan2 as arctan2,
+ arctanh as arctanh,
+ argmax as argmax,
+ argmin as argmin,
+ argsort as argsort,
+ around as around,
+ array as array,
+ asanyarray as asanyarray,
+ asarray as asarray,
+ bitwise_and as bitwise_and,
+ bitwise_or as bitwise_or,
+ bitwise_xor as bitwise_xor,
+ bool_ as bool_,
+ ceil as ceil,
+ choose as choose,
+ clip as clip,
+ common_fill_value as common_fill_value,
+ compress as compress,
+ compressed as compressed,
+ concatenate as concatenate,
+ conjugate as conjugate,
+ convolve as convolve,
+ copy as copy,
+ correlate as correlate,
+ cos as cos,
+ cosh as cosh,
+ count as count,
+ cumprod as cumprod,
+ cumsum as cumsum,
+ default_fill_value as default_fill_value,
+ diag as diag,
+ diagonal as diagonal,
+ diff as diff,
+ divide as divide,
+ empty as empty,
+ empty_like as empty_like,
+ equal as equal,
+ exp as exp,
+ expand_dims as expand_dims,
+ fabs as fabs,
+ filled as filled,
+ fix_invalid as fix_invalid,
+ flatten_mask as flatten_mask,
+ flatten_structured_array as flatten_structured_array,
+ floor as floor,
+ floor_divide as floor_divide,
+ fmod as fmod,
+ frombuffer as frombuffer,
+ fromflex as fromflex,
+ fromfunction as fromfunction,
+ getdata as getdata,
+ getmask as getmask,
+ getmaskarray as getmaskarray,
+ greater as greater,
+ greater_equal as greater_equal,
+ harden_mask as harden_mask,
+ hypot as hypot,
+ identity as identity,
+ ids as ids,
+ indices as indices,
+ inner as inner,
+ innerproduct as innerproduct,
+ isMA as isMA,
+ isMaskedArray as isMaskedArray,
+ is_mask as is_mask,
+ is_masked as is_masked,
+ isarray as isarray,
+ left_shift as left_shift,
+ less as less,
+ less_equal as less_equal,
+ log as log,
+ log10 as log10,
+ log2 as log2,
+ logical_and as logical_and,
+ logical_not as logical_not,
+ logical_or as logical_or,
+ logical_xor as logical_xor,
+ make_mask as make_mask,
+ make_mask_descr as make_mask_descr,
+ make_mask_none as make_mask_none,
+ mask_or as mask_or,
+ masked as masked,
+ masked_array as masked_array,
+ masked_equal as masked_equal,
+ masked_greater as masked_greater,
+ masked_greater_equal as masked_greater_equal,
+ masked_inside as masked_inside,
+ masked_invalid as masked_invalid,
+ masked_less as masked_less,
+ masked_less_equal as masked_less_equal,
+ masked_not_equal as masked_not_equal,
+ masked_object as masked_object,
+ masked_outside as masked_outside,
+ masked_print_option as masked_print_option,
+ masked_singleton as masked_singleton,
+ masked_values as masked_values,
+ masked_where as masked_where,
+ max as max,
+ maximum as maximum,
+ maximum_fill_value as maximum_fill_value,
+ mean as mean,
+ min as min,
+ minimum as minimum,
+ minimum_fill_value as minimum_fill_value,
+ mod as mod,
+ multiply as multiply,
+ mvoid as mvoid,
+ ndim as ndim,
+ negative as negative,
+ nomask as nomask,
+ nonzero as nonzero,
+ not_equal as not_equal,
+ ones as ones,
+ outer as outer,
+ outerproduct as outerproduct,
+ power as power,
+ prod as prod,
+ product as product,
+ ptp as ptp,
+ put as put,
+ putmask as putmask,
+ ravel as ravel,
+ remainder as remainder,
+ repeat as repeat,
+ reshape as reshape,
+ resize as resize,
+ right_shift as right_shift,
+ round as round,
+ round_ as round_,
+ set_fill_value as set_fill_value,
+ shape as shape,
+ sin as sin,
+ sinh as sinh,
+ size as size,
+ soften_mask as soften_mask,
+ sometrue as sometrue,
+ sort as sort,
+ sqrt as sqrt,
+ squeeze as squeeze,
+ std as std,
+ subtract as subtract,
+ sum as sum,
+ swapaxes as swapaxes,
+ take as take,
+ tan as tan,
+ tanh as tanh,
+ trace as trace,
+ transpose as transpose,
+ true_divide as true_divide,
+ var as var,
+ where as where,
+ zeros as zeros,
+)
+
+from numpy.ma.extras import (
+ apply_along_axis as apply_along_axis,
+ apply_over_axes as apply_over_axes,
+ atleast_1d as atleast_1d,
+ atleast_2d as atleast_2d,
+ atleast_3d as atleast_3d,
+ average as average,
+ clump_masked as clump_masked,
+ clump_unmasked as clump_unmasked,
+ column_stack as column_stack,
+ compress_cols as compress_cols,
+ compress_nd as compress_nd,
+ compress_rowcols as compress_rowcols,
+ compress_rows as compress_rows,
+ count_masked as count_masked,
+ corrcoef as corrcoef,
+ cov as cov,
+ diagflat as diagflat,
+ dot as dot,
+ dstack as dstack,
+ ediff1d as ediff1d,
+ flatnotmasked_contiguous as flatnotmasked_contiguous,
+ flatnotmasked_edges as flatnotmasked_edges,
+ hsplit as hsplit,
+ hstack as hstack,
+ isin as isin,
+ in1d as in1d,
+ intersect1d as intersect1d,
+ mask_cols as mask_cols,
+ mask_rowcols as mask_rowcols,
+ mask_rows as mask_rows,
+ masked_all as masked_all,
+ masked_all_like as masked_all_like,
+ median as median,
+ mr_ as mr_,
+ notmasked_contiguous as notmasked_contiguous,
+ notmasked_edges as notmasked_edges,
+ polyfit as polyfit,
+ row_stack as row_stack,
+ setdiff1d as setdiff1d,
+ setxor1d as setxor1d,
+ stack as stack,
+ unique as unique,
+ union1d as union1d,
+ vander as vander,
+ vstack as vstack,
+)
-core: Any
-extras: Any
-MAError: Any
-MaskError: Any
-MaskType: Any
-MaskedArray: Any
-abs: Any
-absolute: Any
-add: Any
-all: Any
-allclose: Any
-allequal: Any
-alltrue: Any
-amax: Any
-amin: Any
-angle: Any
-anom: Any
-anomalies: Any
-any: Any
-append: Any
-arange: Any
-arccos: Any
-arccosh: Any
-arcsin: Any
-arcsinh: Any
-arctan: Any
-arctan2: Any
-arctanh: Any
-argmax: Any
-argmin: Any
-argsort: Any
-around: Any
-array: Any
-asanyarray: Any
-asarray: Any
-bitwise_and: Any
-bitwise_or: Any
-bitwise_xor: Any
-bool_: Any
-ceil: Any
-choose: Any
-clip: Any
-common_fill_value: Any
-compress: Any
-compressed: Any
-concatenate: Any
-conjugate: Any
-convolve: Any
-copy: Any
-correlate: Any
-cos: Any
-cosh: Any
-count: Any
-cumprod: Any
-cumsum: Any
-default_fill_value: Any
-diag: Any
-diagonal: Any
-diff: Any
-divide: Any
-empty: Any
-empty_like: Any
-equal: Any
-exp: Any
-expand_dims: Any
-fabs: Any
-filled: Any
-fix_invalid: Any
-flatten_mask: Any
-flatten_structured_array: Any
-floor: Any
-floor_divide: Any
-fmod: Any
-frombuffer: Any
-fromflex: Any
-fromfunction: Any
-getdata: Any
-getmask: Any
-getmaskarray: Any
-greater: Any
-greater_equal: Any
-harden_mask: Any
-hypot: Any
-identity: Any
-ids: Any
-indices: Any
-inner: Any
-innerproduct: Any
-isMA: Any
-isMaskedArray: Any
-is_mask: Any
-is_masked: Any
-isarray: Any
-left_shift: Any
-less: Any
-less_equal: Any
-log: Any
-log10: Any
-log2: Any
-logical_and: Any
-logical_not: Any
-logical_or: Any
-logical_xor: Any
-make_mask: Any
-make_mask_descr: Any
-make_mask_none: Any
-mask_or: Any
-masked: Any
-masked_array: Any
-masked_equal: Any
-masked_greater: Any
-masked_greater_equal: Any
-masked_inside: Any
-masked_invalid: Any
-masked_less: Any
-masked_less_equal: Any
-masked_not_equal: Any
-masked_object: Any
-masked_outside: Any
-masked_print_option: Any
-masked_singleton: Any
-masked_values: Any
-masked_where: Any
-max: Any
-maximum: Any
-maximum_fill_value: Any
-mean: Any
-min: Any
-minimum: Any
-minimum_fill_value: Any
-mod: Any
-multiply: Any
-mvoid: Any
-ndim: Any
-negative: Any
-nomask: Any
-nonzero: Any
-not_equal: Any
-ones: Any
-outer: Any
-outerproduct: Any
-power: Any
-prod: Any
-product: Any
-ptp: Any
-put: Any
-putmask: Any
-ravel: Any
-remainder: Any
-repeat: Any
-reshape: Any
-resize: Any
-right_shift: Any
-round: Any
-round_: Any
-set_fill_value: Any
-shape: Any
-sin: Any
-sinh: Any
-size: Any
-soften_mask: Any
-sometrue: Any
-sort: Any
-sqrt: Any
-squeeze: Any
-std: Any
-subtract: Any
-sum: Any
-swapaxes: Any
-take: Any
-tan: Any
-tanh: Any
-trace: Any
-transpose: Any
-true_divide: Any
-var: Any
-where: Any
-zeros: Any
-apply_along_axis: Any
-apply_over_axes: Any
-atleast_1d: Any
-atleast_2d: Any
-atleast_3d: Any
-average: Any
-clump_masked: Any
-clump_unmasked: Any
-column_stack: Any
-compress_cols: Any
-compress_nd: Any
-compress_rowcols: Any
-compress_rows: Any
-count_masked: Any
-corrcoef: Any
-cov: Any
-diagflat: Any
-dot: Any
-dstack: Any
-ediff1d: Any
-flatnotmasked_contiguous: Any
-flatnotmasked_edges: Any
-hsplit: Any
-hstack: Any
-isin: Any
-in1d: Any
-intersect1d: Any
-mask_cols: Any
-mask_rowcols: Any
-mask_rows: Any
-masked_all: Any
-masked_all_like: Any
-median: Any
-mr_: Any
-notmasked_contiguous: Any
-notmasked_edges: Any
-polyfit: Any
-row_stack: Any
-setdiff1d: Any
-setxor1d: Any
-stack: Any
-unique: Any
-union1d: Any
-vander: Any
-vstack: Any
+__all__: List[str]
diff --git a/numpy/ma/core.pyi b/numpy/ma/core.pyi
new file mode 100644
index 000000000..e7e3f1f36
--- /dev/null
+++ b/numpy/ma/core.pyi
@@ -0,0 +1,468 @@
+from typing import Any, List, TypeVar, Callable
+from numpy import ndarray, dtype, float64
+
+from numpy import (
+ amax as amax,
+ amin as amin,
+ bool_ as bool_,
+ expand_dims as expand_dims,
+ diff as diff,
+ clip as clip,
+ indices as indices,
+ ones_like as ones_like,
+ squeeze as squeeze,
+ zeros_like as zeros_like,
+)
+
+from numpy.lib.function_base import (
+ angle as angle,
+)
+
+# TODO: Set the `bound` to something more suitable once we
+# have proper shape support
+_ShapeType = TypeVar("_ShapeType", bound=Any)
+_DType_co = TypeVar("_DType_co", bound=dtype[Any], covariant=True)
+
+__all__: List[str]
+
+MaskType = bool_
+nomask: bool_
+
+class MaskedArrayFutureWarning(FutureWarning): ...
+class MAError(Exception): ...
+class MaskError(MAError): ...
+
+def default_fill_value(obj): ...
+def minimum_fill_value(obj): ...
+def maximum_fill_value(obj): ...
+def set_fill_value(a, fill_value): ...
+def common_fill_value(a, b): ...
+def filled(a, fill_value=...): ...
+def getdata(a, subok=...): ...
+get_data = getdata
+
+def fix_invalid(a, mask=..., copy=..., fill_value=...): ...
+
+class _MaskedUFunc:
+ f: Any
+ __doc__: Any
+ __name__: Any
+ def __init__(self, ufunc): ...
+
+class _MaskedUnaryOperation(_MaskedUFunc):
+ fill: Any
+ domain: Any
+ def __init__(self, mufunc, fill=..., domain=...): ...
+ def __call__(self, a, *args, **kwargs): ...
+
+class _MaskedBinaryOperation(_MaskedUFunc):
+ fillx: Any
+ filly: Any
+ def __init__(self, mbfunc, fillx=..., filly=...): ...
+ def __call__(self, a, b, *args, **kwargs): ...
+ def reduce(self, target, axis=..., dtype=...): ...
+ def outer(self, a, b): ...
+ def accumulate(self, target, axis=...): ...
+
+class _DomainedBinaryOperation(_MaskedUFunc):
+ domain: Any
+ fillx: Any
+ filly: Any
+ def __init__(self, dbfunc, domain, fillx=..., filly=...): ...
+ def __call__(self, a, b, *args, **kwargs): ...
+
+exp: _MaskedUnaryOperation
+conjugate: _MaskedUnaryOperation
+sin: _MaskedUnaryOperation
+cos: _MaskedUnaryOperation
+arctan: _MaskedUnaryOperation
+arcsinh: _MaskedUnaryOperation
+sinh: _MaskedUnaryOperation
+cosh: _MaskedUnaryOperation
+tanh: _MaskedUnaryOperation
+abs: _MaskedUnaryOperation
+absolute: _MaskedUnaryOperation
+fabs: _MaskedUnaryOperation
+negative: _MaskedUnaryOperation
+floor: _MaskedUnaryOperation
+ceil: _MaskedUnaryOperation
+around: _MaskedUnaryOperation
+logical_not: _MaskedUnaryOperation
+sqrt: _MaskedUnaryOperation
+log: _MaskedUnaryOperation
+log2: _MaskedUnaryOperation
+log10: _MaskedUnaryOperation
+tan: _MaskedUnaryOperation
+arcsin: _MaskedUnaryOperation
+arccos: _MaskedUnaryOperation
+arccosh: _MaskedUnaryOperation
+arctanh: _MaskedUnaryOperation
+
+add: _MaskedBinaryOperation
+subtract: _MaskedBinaryOperation
+multiply: _MaskedBinaryOperation
+arctan2: _MaskedBinaryOperation
+equal: _MaskedBinaryOperation
+not_equal: _MaskedBinaryOperation
+less_equal: _MaskedBinaryOperation
+greater_equal: _MaskedBinaryOperation
+less: _MaskedBinaryOperation
+greater: _MaskedBinaryOperation
+logical_and: _MaskedBinaryOperation
+alltrue: _MaskedBinaryOperation
+logical_or: _MaskedBinaryOperation
+sometrue: Callable[..., Any]
+logical_xor: _MaskedBinaryOperation
+bitwise_and: _MaskedBinaryOperation
+bitwise_or: _MaskedBinaryOperation
+bitwise_xor: _MaskedBinaryOperation
+hypot: _MaskedBinaryOperation
+divide: _MaskedBinaryOperation
+true_divide: _MaskedBinaryOperation
+floor_divide: _MaskedBinaryOperation
+remainder: _MaskedBinaryOperation
+fmod: _MaskedBinaryOperation
+mod: _MaskedBinaryOperation
+
+def make_mask_descr(ndtype): ...
+def getmask(a): ...
+get_mask = getmask
+
+def getmaskarray(arr): ...
+def is_mask(m): ...
+def make_mask(m, copy=..., shrink=..., dtype=...): ...
+def make_mask_none(newshape, dtype=...): ...
+def mask_or(m1, m2, copy=..., shrink=...): ...
+def flatten_mask(mask): ...
+def masked_where(condition, a, copy=...): ...
+def masked_greater(x, value, copy=...): ...
+def masked_greater_equal(x, value, copy=...): ...
+def masked_less(x, value, copy=...): ...
+def masked_less_equal(x, value, copy=...): ...
+def masked_not_equal(x, value, copy=...): ...
+def masked_equal(x, value, copy=...): ...
+def masked_inside(x, v1, v2, copy=...): ...
+def masked_outside(x, v1, v2, copy=...): ...
+def masked_object(x, value, copy=..., shrink=...): ...
+def masked_values(x, value, rtol=..., atol=..., copy=..., shrink=...): ...
+def masked_invalid(a, copy=...): ...
+
+class _MaskedPrintOption:
+ def __init__(self, display): ...
+ def display(self): ...
+ def set_display(self, s): ...
+ def enabled(self): ...
+ def enable(self, shrink=...): ...
+
+masked_print_option: _MaskedPrintOption
+
+def flatten_structured_array(a): ...
+
+class MaskedIterator:
+ ma: Any
+ dataiter: Any
+ maskiter: Any
+ def __init__(self, ma): ...
+ def __iter__(self): ...
+ def __getitem__(self, indx): ...
+ def __setitem__(self, index, value): ...
+ def __next__(self): ...
+
+class MaskedArray(ndarray[_ShapeType, _DType_co]):
+ __array_priority__: Any
+ def __new__(cls, data=..., mask=..., dtype=..., copy=..., subok=..., ndmin=..., fill_value=..., keep_mask=..., hard_mask=..., shrink=..., order=...): ...
+ def __array_finalize__(self, obj): ...
+ def __array_wrap__(self, obj, context=...): ...
+ def view(self, dtype=..., type=..., fill_value=...): ...
+ def __getitem__(self, indx): ...
+ def __setitem__(self, indx, value): ...
+ @property
+ def dtype(self): ...
+ @dtype.setter
+ def dtype(self, dtype): ...
+ @property
+ def shape(self): ...
+ @shape.setter
+ def shape(self, shape): ...
+ def __setmask__(self, mask, copy=...): ...
+ @property
+ def mask(self): ...
+ @mask.setter
+ def mask(self, value): ...
+ @property
+ def recordmask(self): ...
+ @recordmask.setter
+ def recordmask(self, mask): ...
+ def harden_mask(self): ...
+ def soften_mask(self): ...
+ @property
+ def hardmask(self): ...
+ def unshare_mask(self): ...
+ @property
+ def sharedmask(self): ...
+ def shrink_mask(self): ...
+ @property
+ def baseclass(self): ...
+ data: Any
+ @property
+ def flat(self): ...
+ @flat.setter
+ def flat(self, value): ...
+ @property
+ def fill_value(self): ...
+ @fill_value.setter
+ def fill_value(self, value=...): ...
+ get_fill_value: Any
+ set_fill_value: Any
+ def filled(self, fill_value=...): ...
+ def compressed(self): ...
+ def compress(self, condition, axis=..., out=...): ...
+ def __eq__(self, other): ...
+ def __ne__(self, other): ...
+ def __add__(self, other): ...
+ def __radd__(self, other): ...
+ def __sub__(self, other): ...
+ def __rsub__(self, other): ...
+ def __mul__(self, other): ...
+ def __rmul__(self, other): ...
+ def __div__(self, other): ...
+ def __truediv__(self, other): ...
+ def __rtruediv__(self, other): ...
+ def __floordiv__(self, other): ...
+ def __rfloordiv__(self, other): ...
+ def __pow__(self, other): ...
+ def __rpow__(self, other): ...
+ def __iadd__(self, other): ...
+ def __isub__(self, other): ...
+ def __imul__(self, other): ...
+ def __idiv__(self, other): ...
+ def __ifloordiv__(self, other): ...
+ def __itruediv__(self, other): ...
+ def __ipow__(self, other): ...
+ def __float__(self): ...
+ def __int__(self): ...
+ @property # type: ignore[misc]
+ def imag(self): ...
+ get_imag: Any
+ @property # type: ignore[misc]
+ def real(self): ...
+ get_real: Any
+ def count(self, axis=..., keepdims=...): ...
+ def ravel(self, order=...): ...
+ def reshape(self, *s, **kwargs): ...
+ def resize(self, newshape, refcheck=..., order=...): ...
+ def put(self, indices, values, mode=...): ...
+ def ids(self): ...
+ def iscontiguous(self): ...
+ def all(self, axis=..., out=..., keepdims=...): ...
+ def any(self, axis=..., out=..., keepdims=...): ...
+ def nonzero(self): ...
+ def trace(self, offset=..., axis1=..., axis2=..., dtype=..., out=...): ...
+ def dot(self, b, out=..., strict=...): ...
+ def sum(self, axis=..., dtype=..., out=..., keepdims=...): ...
+ def cumsum(self, axis=..., dtype=..., out=...): ...
+ def prod(self, axis=..., dtype=..., out=..., keepdims=...): ...
+ product: Any
+ def cumprod(self, axis=..., dtype=..., out=...): ...
+ def mean(self, axis=..., dtype=..., out=..., keepdims=...): ...
+ def anom(self, axis=..., dtype=...): ...
+ def var(self, axis=..., dtype=..., out=..., ddof=..., keepdims=...): ...
+ def std(self, axis=..., dtype=..., out=..., ddof=..., keepdims=...): ...
+ def round(self, decimals=..., out=...): ...
+ def argsort(self, axis=..., kind=..., order=..., endwith=..., fill_value=...): ...
+ def argmin(self, axis=..., fill_value=..., out=...): ...
+ def argmax(self, axis=..., fill_value=..., out=...): ...
+ def sort(self, axis=..., kind=..., order=..., endwith=..., fill_value=...): ...
+ def min(self, axis=..., out=..., fill_value=..., keepdims=...): ...
+ # NOTE: deprecated
+ # def mini(self, axis=...): ...
+ # def tostring(self, fill_value=..., order=...): ...
+ def max(self, axis=..., out=..., fill_value=..., keepdims=...): ...
+ def ptp(self, axis=..., out=..., fill_value=..., keepdims=...): ...
+ def partition(self, *args, **kwargs): ...
+ def argpartition(self, *args, **kwargs): ...
+ def take(self, indices, axis=..., out=..., mode=...): ...
+ copy: Any
+ diagonal: Any
+ flatten: Any
+ repeat: Any
+ squeeze: Any
+ swapaxes: Any
+ T: Any
+ transpose: Any
+ def tolist(self, fill_value=...): ...
+ def tobytes(self, fill_value=..., order=...): ...
+ def tofile(self, fid, sep=..., format=...): ...
+ def toflex(self): ...
+ torecords: Any
+ def __reduce__(self): ...
+ def __deepcopy__(self, memo=...): ...
+
+class mvoid(MaskedArray[_ShapeType, _DType_co]):
+ def __new__(
+ self,
+ data,
+ mask=...,
+ dtype=...,
+ fill_value=...,
+ hardmask=...,
+ copy=...,
+ subok=...,
+ ): ...
+ def __getitem__(self, indx): ...
+ def __setitem__(self, indx, value): ...
+ def __iter__(self): ...
+ def __len__(self): ...
+ def filled(self, fill_value=...): ...
+ def tolist(self): ...
+
+def isMaskedArray(x): ...
+isarray = isMaskedArray
+isMA = isMaskedArray
+
+# 0D float64 array
+class MaskedConstant(MaskedArray[Any, dtype[float64]]):
+ def __new__(cls): ...
+ __class__: Any
+ def __array_finalize__(self, obj): ...
+ def __array_prepare__(self, obj, context=...): ...
+ def __array_wrap__(self, obj, context=...): ...
+ def __format__(self, format_spec): ...
+ def __reduce__(self): ...
+ def __iop__(self, other): ...
+ __iadd__: Any
+ __isub__: Any
+ __imul__: Any
+ __ifloordiv__: Any
+ __itruediv__: Any
+ __ipow__: Any
+ def copy(self, *args, **kwargs): ...
+ def __copy__(self): ...
+ def __deepcopy__(self, memo): ...
+ def __setattr__(self, attr, value): ...
+
+masked: MaskedConstant
+masked_singleton: MaskedConstant
+masked_array = MaskedArray
+
+def array(
+ data,
+ dtype=...,
+ copy=...,
+ order=...,
+ mask=...,
+ fill_value=...,
+ keep_mask=...,
+ hard_mask=...,
+ shrink=...,
+ subok=...,
+ ndmin=...,
+): ...
+def is_masked(x): ...
+
+class _extrema_operation(_MaskedUFunc):
+ compare: Any
+ fill_value_func: Any
+ def __init__(self, ufunc, compare, fill_value): ...
+ # NOTE: in practice `b` has a default value, but users should
+ # explicitly provide a value here as the default is deprecated
+ def __call__(self, a, b): ...
+ def reduce(self, target, axis=...): ...
+ def outer(self, a, b): ...
+
+def min(obj, axis=..., out=..., fill_value=..., keepdims=...): ...
+def max(obj, axis=..., out=..., fill_value=..., keepdims=...): ...
+def ptp(obj, axis=..., out=..., fill_value=..., keepdims=...): ...
+
+class _frommethod:
+ __name__: Any
+ __doc__: Any
+ reversed: Any
+ def __init__(self, methodname, reversed=...): ...
+ def getdoc(self): ...
+ def __call__(self, a, *args, **params): ...
+
+all: _frommethod
+anomalies: _frommethod
+anom: _frommethod
+any: _frommethod
+compress: _frommethod
+cumprod: _frommethod
+cumsum: _frommethod
+copy: _frommethod
+diagonal: _frommethod
+harden_mask: _frommethod
+ids: _frommethod
+mean: _frommethod
+nonzero: _frommethod
+prod: _frommethod
+product: _frommethod
+ravel: _frommethod
+repeat: _frommethod
+soften_mask: _frommethod
+std: _frommethod
+sum: _frommethod
+swapaxes: _frommethod
+trace: _frommethod
+var: _frommethod
+count: _frommethod
+argmin: _frommethod
+argmax: _frommethod
+
+minimum: _extrema_operation
+maximum: _extrema_operation
+
+def take(a, indices, axis=..., out=..., mode=...): ...
+def power(a, b, third=...): ...
+def argsort(a, axis=..., kind=..., order=..., endwith=..., fill_value=...): ...
+def sort(a, axis=..., kind=..., order=..., endwith=..., fill_value=...): ...
+def compressed(x): ...
+def concatenate(arrays, axis=...): ...
+def diag(v, k=...): ...
+def left_shift(a, n): ...
+def right_shift(a, n): ...
+def put(a, indices, values, mode=...): ...
+def putmask(a, mask, values): ...
+def transpose(a, axes=...): ...
+def reshape(a, new_shape, order=...): ...
+def resize(x, new_shape): ...
+def ndim(obj): ...
+def shape(obj): ...
+def size(obj, axis=...): ...
+def where(condition, x=..., y=...): ...
+def choose(indices, choices, out=..., mode=...): ...
+def round_(a, decimals=..., out=...): ...
+round = round_
+
+def inner(a, b): ...
+innerproduct = inner
+
+def outer(a, b): ...
+outerproduct = outer
+
+def correlate(a, v, mode=..., propagate_mask=...): ...
+def convolve(a, v, mode=..., propagate_mask=...): ...
+def allequal(a, b, fill_value=...): ...
+def allclose(a, b, masked_equal=..., rtol=..., atol=...): ...
+def asarray(a, dtype=..., order=...): ...
+def asanyarray(a, dtype=...): ...
+def fromflex(fxarray): ...
+
+class _convert2ma:
+ __doc__: Any
+ def __init__(self, funcname, params=...): ...
+ def getdoc(self): ...
+ def __call__(self, *args, **params): ...
+
+arange: _convert2ma
+empty: _convert2ma
+empty_like: _convert2ma
+frombuffer: _convert2ma
+fromfunction: _convert2ma
+identity: _convert2ma
+ones: _convert2ma
+zeros: _convert2ma
+
+def append(a, b, axis=...): ...
+def dot(a, b, strict=..., out=...): ...
+def mask_rowcols(a, axis=...): ...
diff --git a/numpy/ma/extras.pyi b/numpy/ma/extras.pyi
new file mode 100644
index 000000000..e58e43bad
--- /dev/null
+++ b/numpy/ma/extras.pyi
@@ -0,0 +1,84 @@
+from typing import Any, List
+from numpy.lib.index_tricks import AxisConcatenator
+
+from numpy.ma.core import (
+ dot as dot,
+ mask_rowcols as mask_rowcols,
+)
+
+__all__: List[str]
+
+def count_masked(arr, axis=...): ...
+def masked_all(shape, dtype = ...): ...
+def masked_all_like(arr): ...
+
+class _fromnxfunction:
+ __name__: Any
+ __doc__: Any
+ def __init__(self, funcname): ...
+ def getdoc(self): ...
+ def __call__(self, *args, **params): ...
+
+class _fromnxfunction_single(_fromnxfunction):
+ def __call__(self, x, *args, **params): ...
+
+class _fromnxfunction_seq(_fromnxfunction):
+ def __call__(self, x, *args, **params): ...
+
+class _fromnxfunction_allargs(_fromnxfunction):
+ def __call__(self, *args, **params): ...
+
+atleast_1d: _fromnxfunction_allargs
+atleast_2d: _fromnxfunction_allargs
+atleast_3d: _fromnxfunction_allargs
+
+vstack: _fromnxfunction_seq
+row_stack: _fromnxfunction_seq
+hstack: _fromnxfunction_seq
+column_stack: _fromnxfunction_seq
+dstack: _fromnxfunction_seq
+stack: _fromnxfunction_seq
+
+hsplit: _fromnxfunction_single
+diagflat: _fromnxfunction_single
+
+def apply_along_axis(func1d, axis, arr, *args, **kwargs): ...
+def apply_over_axes(func, a, axes): ...
+def average(a, axis=..., weights=..., returned=...): ...
+def median(a, axis=..., out=..., overwrite_input=..., keepdims=...): ...
+def compress_nd(x, axis=...): ...
+def compress_rowcols(x, axis=...): ...
+def compress_rows(a): ...
+def compress_cols(a): ...
+def mask_rows(a, axis = ...): ...
+def mask_cols(a, axis = ...): ...
+def ediff1d(arr, to_end=..., to_begin=...): ...
+def unique(ar1, return_index=..., return_inverse=...): ...
+def intersect1d(ar1, ar2, assume_unique=...): ...
+def setxor1d(ar1, ar2, assume_unique=...): ...
+def in1d(ar1, ar2, assume_unique=..., invert=...): ...
+def isin(element, test_elements, assume_unique=..., invert=...): ...
+def union1d(ar1, ar2): ...
+def setdiff1d(ar1, ar2, assume_unique=...): ...
+def cov(x, y=..., rowvar=..., bias=..., allow_masked=..., ddof=...): ...
+def corrcoef(x, y=..., rowvar=..., bias = ..., allow_masked=..., ddof = ...): ...
+
+class MAxisConcatenator(AxisConcatenator):
+ concatenate: Any
+ @classmethod
+ def makemat(cls, arr): ...
+ def __getitem__(self, key): ...
+
+class mr_class(MAxisConcatenator):
+ def __init__(self): ...
+
+mr_: mr_class
+
+def flatnotmasked_edges(a): ...
+def notmasked_edges(a, axis=...): ...
+def flatnotmasked_contiguous(a): ...
+def notmasked_contiguous(a, axis=...): ...
+def clump_unmasked(a): ...
+def clump_masked(a): ...
+def vander(x, n=...): ...
+def polyfit(x, y, deg, rcond=..., full=..., w=..., cov=...): ...
diff --git a/numpy/ma/mrecords.pyi b/numpy/ma/mrecords.pyi
new file mode 100644
index 000000000..92d5afb89
--- /dev/null
+++ b/numpy/ma/mrecords.pyi
@@ -0,0 +1,88 @@
+from typing import List, Any, TypeVar
+
+from numpy import dtype
+from numpy.ma import MaskedArray
+
+__all__: List[str]
+
+# TODO: Set the `bound` to something more suitable once we
+# have proper shape support
+_ShapeType = TypeVar("_ShapeType", bound=Any)
+_DType_co = TypeVar("_DType_co", bound=dtype[Any], covariant=True)
+
+class MaskedRecords(MaskedArray[_ShapeType, _DType_co]):
+ def __new__(
+ cls,
+ shape,
+ dtype=...,
+ buf=...,
+ offset=...,
+ strides=...,
+ formats=...,
+ names=...,
+ titles=...,
+ byteorder=...,
+ aligned=...,
+ mask=...,
+ hard_mask=...,
+ fill_value=...,
+ keep_mask=...,
+ copy=...,
+ **options,
+ ): ...
+ _mask: Any
+ _fill_value: Any
+ @property
+ def _data(self): ...
+ @property
+ def _fieldmask(self): ...
+ def __array_finalize__(self, obj): ...
+ def __len__(self): ...
+ def __getattribute__(self, attr): ...
+ def __setattr__(self, attr, val): ...
+ def __getitem__(self, indx): ...
+ def __setitem__(self, indx, value): ...
+ def view(self, dtype=..., type=...): ...
+ def harden_mask(self): ...
+ def soften_mask(self): ...
+ def copy(self): ...
+ def tolist(self, fill_value=...): ...
+ def __reduce__(self): ...
+
+mrecarray = MaskedRecords
+
+def fromarrays(
+ arraylist,
+ dtype=...,
+ shape=...,
+ formats=...,
+ names=...,
+ titles=...,
+ aligned=...,
+ byteorder=...,
+ fill_value=...,
+): ...
+
+def fromrecords(
+ reclist,
+ dtype=...,
+ shape=...,
+ formats=...,
+ names=...,
+ titles=...,
+ aligned=...,
+ byteorder=...,
+ fill_value=...,
+ mask=...,
+): ...
+
+def fromtextfile(
+ fname,
+ delimitor=...,
+ commentchar=...,
+ missingchar=...,
+ varnames=...,
+ vartypes=...,
+): ...
+
+def addfield(mrecord, newfield, newfieldname=...): ...