1import warnings
2import numpy as np
3from numpy import nanmean, nansum
4
5__all__ = [
6    "median",
7    "nanmedian",
8    "nansum",
9    "nanmean",
10    "nanvar",
11    "nanstd",
12    "nanmin",
13    "nanmax",
14    "nanargmin",
15    "nanargmax",
16    "ss",
17    "anynan",
18    "allnan",
19]
20
21
22def nanargmin(a, axis=None):
23    "Slow nanargmin function used for unaccelerated dtypes."
24    with warnings.catch_warnings():
25        warnings.simplefilter("ignore")
26        return np.nanargmin(a, axis=axis)
27
28
29def nanargmax(a, axis=None):
30    "Slow nanargmax function used for unaccelerated dtypes."
31    with warnings.catch_warnings():
32        warnings.simplefilter("ignore")
33        return np.nanargmax(a, axis=axis)
34
35
36def nanvar(a, axis=None, ddof=0):
37    "Slow nanvar function used for unaccelerated dtypes."
38    with warnings.catch_warnings():
39        warnings.simplefilter("ignore")
40        return np.nanvar(a, axis=axis, ddof=ddof)
41
42
43def nanstd(a, axis=None, ddof=0):
44    "Slow nanstd function used for unaccelerated dtypes."
45    with warnings.catch_warnings():
46        warnings.simplefilter("ignore")
47        return np.nanstd(a, axis=axis, ddof=ddof)
48
49
50def nanmin(a, axis=None):
51    "Slow nanmin function used for unaccelerated dtypes."
52    with warnings.catch_warnings():
53        warnings.simplefilter("ignore")
54        return np.nanmin(a, axis=axis)
55
56
57def nanmax(a, axis=None):
58    "Slow nanmax function used for unaccelerated dtypes."
59    with warnings.catch_warnings():
60        warnings.simplefilter("ignore")
61        return np.nanmax(a, axis=axis)
62
63
64def median(a, axis=None):
65    "Slow median function used for unaccelerated dtypes."
66    with warnings.catch_warnings():
67        warnings.simplefilter("ignore")
68        return np.median(a, axis=axis)
69
70
71def nanmedian(a, axis=None):
72    "Slow nanmedian function used for unaccelerated dtypes."
73    with warnings.catch_warnings():
74        warnings.simplefilter("ignore")
75        return np.nanmedian(a, axis=axis)
76
77
78def ss(a, axis=None):
79    "Slow sum of squares used for unaccelerated dtypes."
80    a = np.asarray(a)
81    y = np.multiply(a, a).sum(axis)
82    return y
83
84
85def anynan(a, axis=None):
86    "Slow check for Nans used for unaccelerated dtypes."
87    return np.isnan(a).any(axis)
88
89
90def allnan(a, axis=None):
91    "Slow check for all Nans used for unaccelerated dtypes."
92    return np.isnan(a).all(axis)
93