summaryrefslogtreecommitdiff
path: root/numpy/core/ma.py
diff options
context:
space:
mode:
authorsasha <sasha@localhost>2006-01-12 22:27:17 +0000
committersasha <sasha@localhost>2006-01-12 22:27:17 +0000
commit42779fea3ed52eac633f4d12ca4f9d355ffb5535 (patch)
tree5de88daad20bfd88805e12c767aa175bf31f3e38 /numpy/core/ma.py
parent0a407f99008973cead33d672c44006fbfa285a34 (diff)
downloadnumpy-42779fea3ed52eac633f4d12ca4f9d355ffb5535.tar.gz
introduced nomask = None constant
Diffstat (limited to 'numpy/core/ma.py')
-rw-r--r--numpy/core/ma.py227
1 files changed, 114 insertions, 113 deletions
diff --git a/numpy/core/ma.py b/numpy/core/ma.py
index eaa7a31b7..86b8fb79f 100644
--- a/numpy/core/ma.py
+++ b/numpy/core/ma.py
@@ -18,6 +18,7 @@ import numeric
MaskType=bool_
+nomask = None # To be changed to MaskType(0)
divide_tolerance = 1.e-35
class MAError (Exception):
@@ -133,21 +134,21 @@ def set_fill_value (a, fill_value):
a.set_fill_value (fill_value)
def getmask (a):
- """Mask of values in a; could be None.
- Returns None if a is not a masked array.
+ """Mask of values in a; could be nomask.
+ Returns nomask if a is not a masked array.
To get an array for sure use getmaskarray."""
if isinstance(a, MaskedArray):
return a.raw_mask()
else:
- return None
+ return nomask
def getmaskarray (a):
- """Mask of values in a; an array of zeros if mask is None
+ """Mask of values in a; an array of zeros if mask is nomask
or not a masked array, and is a byte-sized integer.
Do not try to add up entries, for example.
"""
m = getmask(a)
- if m is None:
+ if m is nomask:
return make_mask_none(shape(a))
else:
return m
@@ -155,7 +156,7 @@ def getmaskarray (a):
def is_mask (m):
"""Is m a legal mask? Does not check contents, only type.
"""
- if m is None or (isinstance(m, ndarray) and \
+ if m is nomask or (isinstance(m, ndarray) and \
m.dtype is MaskType):
return 1
else:
@@ -164,12 +165,12 @@ def is_mask (m):
def make_mask (m, copy=0, flag=0):
"""make_mask(m, copy=0, flag=0)
return m as a mask, creating a copy if necessary or requested.
- Can accept any sequence of integers or None. Does not check
+ Can accept any sequence of integers or nomask. Does not check
that contents must be 0s and 1s.
- if flag, return None if m contains no true elements.
+ if flag, return nomask if m contains no true elements.
"""
- if m is None:
- return None
+ if m is nomask:
+ return nomask
elif isinstance(m, ndarray):
if m.dtype is MaskType:
if copy:
@@ -182,7 +183,7 @@ def make_mask (m, copy=0, flag=0):
result = filled(m,True).astype(MaskType)
if flag and not oldnumeric.sometrue(oldnumeric.ravel(result)):
- return None
+ return nomask
else:
return result
@@ -193,11 +194,11 @@ def make_mask_none (s):
return result
def mask_or (m1, m2):
- """Logical or of the mask candidates m1 and m2, treating None as false.
- Result may equal m1 or m2 if the other is None.
+ """Logical or of the mask candidates m1 and m2, treating nomask as false.
+ Result may equal m1 or m2 if the other is nomask.
"""
- if m1 is None: return make_mask(m2)
- if m2 is None: return make_mask(m1)
+ if m1 is nomask: return make_mask(m2)
+ if m2 is nomask: return make_mask(m1)
if m1 is m2 and is_mask(m1): return m1
return make_mask(umath.logical_or(m1, m2))
@@ -303,7 +304,7 @@ class masked_unary_operation:
if self.domain is not None:
m = mask_or(m, self.domain(d1))
result = self.f(d1, *args, **kwargs)
- if m is not None:
+ if m is not nomask:
try:
shape = result.shape
except AttributeError:
@@ -350,7 +351,7 @@ class domained_binary_operation:
mb = mask_or(mb, t)
m = mask_or(ma, mb)
result = self.f(d1, d2)
- if m is not None:
+ if m is not nomask:
try:
shape = result.shape
except AttributeError:
@@ -379,7 +380,7 @@ class masked_binary_operation:
d1 = filled(a, self.fillx)
d2 = filled(b, self.filly)
result = self.f(d1, d2, *args, **kwargs)
- if m is not None:
+ if m is not nomask:
try:
shape = result.shape
except AttributeError:
@@ -395,10 +396,10 @@ class masked_binary_operation:
t = filled(target, self.filly)
if t.shape == ():
t = t.reshape(1)
- if m is not None:
+ if m is not nomask:
m = make_mask(m, copy=1)
m.shape = (1,)
- if m is None:
+ if m is nomask:
return masked_array (self.f.reduce (t, axis))
else:
t = masked_array (t, m)
@@ -415,8 +416,8 @@ class masked_binary_operation:
"Return the function applied to the outer product of a and b."
ma = getmask(a)
mb = getmask(b)
- if ma is None and mb is None:
- m = None
+ if ma is nomask and mb is nomask:
+ m = nomask
else:
ma = getmaskarray(a)
mb = getmaskarray(b)
@@ -507,10 +508,10 @@ class MaskedArray (object):
Construction:
x = array(data, dtype=None, copy=True, fortran=False,
- mask = None, fill_value=None)
+ mask = nomask, fill_value=None)
If copy=False, every effort is made not to copy the data:
- If data is a MaskedArray, and argument mask=None,
+ If data is a MaskedArray, and argument mask=nomask,
then the candidate data is data.data and the
mask used is data.mask. If data is a numeric array,
it is used as the candidate raw data.
@@ -521,7 +522,7 @@ class MaskedArray (object):
If a data copy is required, raw data stored is the result of:
numeric.array(data, dtype=dtypechar, copy=copy)
- If mask is None there are no masked values. Otherwise mask must
+ If mask is nomask there are no masked values. Otherwise mask must
be convertible to an array of booleans with the same shape as x.
fill_value is used to fill in masked values when necessary,
@@ -530,8 +531,8 @@ class MaskedArray (object):
"""
__array_priority__ = 10.1
def __init__(self, data, dtype=None, copy=True, fortran=False,
- mask=None, fill_value=None):
- """array(data, dtype=None, copy=True, fortran=False, mask=None, fill_value=None)
+ mask=nomask, fill_value=None):
+ """array(data, dtype=None, copy=True, fortran=False, mask=nomask, fill_value=None)
If data already a numeric array, its dtype becomes the default value of dtype.
"""
tc = dtype
@@ -543,9 +544,9 @@ class MaskedArray (object):
tc = ctc
elif dtype2char(tc) != ctc:
need_data_copied = True
- if mask is None:
+ if mask is nomask:
mask = data.mask
- elif mask is not None: #attempting to change the mask
+ elif mask is not nomask: #attempting to change the mask
need_data_copied = True
elif isinstance(data, ndarray):
@@ -567,12 +568,12 @@ class MaskedArray (object):
else:
self._data = c
- if mask is None:
- self._mask = None
+ if mask is nomask:
+ self._mask = nomask
self._shared_mask = 0
else:
self._mask = make_mask (mask)
- if self._mask is None:
+ if self._mask is nomask:
self._shared_mask = 0
else:
self._shared_mask = (self._mask is mask)
@@ -595,7 +596,7 @@ class MaskedArray (object):
def __array__ (self, t = None):
"Special hook for numeric. Converts to numeric if possible."
- if self._mask is not None:
+ if self._mask is not nomask:
if oldnumeric.ravel(self._mask).any():
raise MAError, \
"""Cannot automatically convert masked array to numeric because data
@@ -603,7 +604,7 @@ class MaskedArray (object):
"""
else: # Mask is all false
# Optimize to avoid future invocations of this section.
- self._mask = None
+ self._mask = nomask
self._shared_mask = 0
if t:
return self._data.astype(t)
@@ -623,15 +624,15 @@ class MaskedArray (object):
def _set_shape (self, newshape):
"Set the array's shape."
self._data.shape = newshape
- if self._mask is not None:
+ if self._mask is not nomask:
self._mask = self._mask.copy()
self._mask.shape = newshape
def _get_flat(self):
"""Calculate the flat value.
"""
- if self._mask is None:
- return masked_array(self._data.ravel(), mask=None,
+ if self._mask is nomask:
+ return masked_array(self._data.ravel(), mask=nomask,
fill_value = self.fill_value())
else:
return masked_array(self._data.ravel(),
@@ -645,8 +646,8 @@ class MaskedArray (object):
def _get_real(self):
"Get the real part of a complex array."
- if self._mask is None:
- return masked_array(self._data.real, mask=None,
+ if self._mask is nomask:
+ return masked_array(self._data.real, mask=nomask,
fill_value = self.fill_value())
else:
return masked_array(self._data.real, mask=self._mask.ravel(),
@@ -659,8 +660,8 @@ class MaskedArray (object):
def _get_imaginary(self):
"Get the imaginary part of a complex array."
- if self._mask is None:
- return masked_array(self._data.imag, mask=None,
+ if self._mask is nomask:
+ return masked_array(self._data.imag, mask=nomask,
fill_value = self.fill_value())
else:
return masked_array(self._data.imag, mask=self._mask.ravel(),
@@ -711,7 +712,7 @@ array(data = %(data)s,
without_mask1 = """array(%(data)s)"""
n = len(self.shape)
- if self._mask is None:
+ if self._mask is nomask:
if n <=1:
return without_mask1 % {'data':str(self.filled())}
return without_mask % {'data':str(self.filled())}
@@ -728,7 +729,7 @@ array(data = %(data)s,
'fill': str(self.fill_value())
}
without_mask1 = """array(%(data)s)"""
- if self._mask is None:
+ if self._mask is nomask:
return without_mask % {'data':str(self.filled())}
else:
return with_mask % {
@@ -740,14 +741,14 @@ array(data = %(data)s,
def __float__(self):
"Convert self to float."
self.unmask()
- if self._mask is not None:
+ if self._mask is not nomask:
raise MAError, 'Cannot convert masked element to a Python float.'
return float(self.data.item())
def __int__(self):
"Convert self to int."
self.unmask()
- if self._mask is not None:
+ if self._mask is not nomask:
raise MAError, 'Cannot convert masked element to a Python int.'
return int(self.data.item())
@@ -756,7 +757,7 @@ array(data = %(data)s,
self.unshare_mask()
m = self._mask
dout = self._data[i]
- if m is None:
+ if m is nomask:
return dout
mi = m[i]
if mi.size == 1:
@@ -772,7 +773,7 @@ array(data = %(data)s,
self.unshare_mask()
m = self._mask
dout = self._data[i:j]
- if m is None:
+ if m is nomask:
return masked_array(dout, fill_value=self._fill_value)
else:
return masked_array(dout, mask = m[i:j], fill_value=self._fill_value)
@@ -788,7 +789,7 @@ array(data = %(data)s,
if self is masked:
raise MAError, 'Cannot alter the masked element.'
if value is masked:
- if self._mask is None:
+ if self._mask is nomask:
self._mask = make_mask_none(d.shape)
self._shared_mask = False
else:
@@ -798,12 +799,12 @@ array(data = %(data)s,
m = getmask(value)
value = filled(value).astype(d.dtype)
d[index] = value
- if m is None:
- if self._mask is not None:
+ if m is nomask:
+ if self._mask is not nomask:
self.unshare_mask()
self._mask[index] = False
else:
- if self._mask is None:
+ if self._mask is nomask:
self._mask = make_mask_none(d.shape)
self._shared_mask = True
else:
@@ -816,7 +817,7 @@ array(data = %(data)s,
if self is masked:
raise MAError, "Cannot alter the 'masked' object."
if value is masked:
- if self._mask is None:
+ if self._mask is nomask:
self._mask = make_mask_none(d.shape)
self._shared_mask = False
self._mask[i:j] = True
@@ -824,12 +825,12 @@ array(data = %(data)s,
m = getmask(value)
value = filled(value).astype(d.dtype)
d[i:j] = value
- if m is None:
- if self._mask is not None:
+ if m is nomask:
+ if self._mask is not nomask:
self.unshare_mask()
self._mask[i:j] = False
else:
- if self._mask is None:
+ if self._mask is nomask:
self._mask = make_mask_none(self._data.shape)
self._shared_mask = False
self._mask[i:j] = m
@@ -843,8 +844,8 @@ array(data = %(data)s,
# XXX: scalars do not have len
m = self._mask
d = self._data
- return bool(m is not None and m.any()
- or d is not None and d.any())
+ return bool(m is not nomask and m.any()
+ or d is not nomask and d.any())
def __len__ (self):
"""Return length of first dimension. This is weird but Python's
@@ -976,11 +977,11 @@ array(data = %(data)s,
else:
raise TypeError, 'Incorrect type for in-place operation.'
- if self._mask is None:
+ if self._mask is nomask:
self._data += f
m = getmask(other)
self._mask = m
- self._shared_mask = m is not None
+ self._shared_mask = m is not nomask
else:
result = add(self, masked_array(f, mask=getmask(other)))
self._data = result.data
@@ -1019,11 +1020,11 @@ array(data = %(data)s,
else:
raise TypeError, 'Incorrect type for in-place operation.'
- if self._mask is None:
+ if self._mask is nomask:
self._data *= f
m = getmask(other)
self._mask = m
- self._shared_mask = m is not None
+ self._shared_mask = m is not nomask
else:
result = multiply(self, masked_array(f, mask=getmask(other)))
self._data = result.data
@@ -1062,11 +1063,11 @@ array(data = %(data)s,
else:
raise TypeError, 'Incorrect type for in-place operation.'
- if self._mask is None:
+ if self._mask is nomask:
self._data -= f
m = getmask(other)
self._mask = m
- self._shared_mask = m is not None
+ self._shared_mask = m is not nomask
else:
result = subtract(self, masked_array(f, mask=getmask(other)))
self._data = result.data
@@ -1147,7 +1148,7 @@ array(data = %(data)s,
def compressed (self):
"A 1-D array of all the non-masked data."
d = oldnumeric.ravel(self._data)
- if self._mask is None:
+ if self._mask is nomask:
return array(d)
else:
m = 1 - oldnumeric.ravel(self._mask)
@@ -1159,7 +1160,7 @@ array(data = %(data)s,
m = self._mask
s = self._data.shape
ls = len(s)
- if m is None:
+ if m is nomask:
if ls == 0:
return 1
if ls == 1:
@@ -1196,13 +1197,13 @@ array(data = %(data)s,
"""A numeric array with masked values filled. If fill_value is None,
use self.fill_value().
- If mask is None, copy data only if not contiguous.
+ If mask is nomask, copy data only if not contiguous.
Result is always a contiguous, numeric array.
# Is contiguous really necessary now?
"""
d = self._data
m = self._mask
- if m is None:
+ if m is nomask:
if d.flags['CONTIGUOUS']:
return d
else:
@@ -1257,7 +1258,7 @@ array(data = %(data)s,
"""
iota = numeric.arange(self.size)
d = self._data
- if self._mask is None:
+ if self._mask is nomask:
ind = iota
else:
ind = oldnumeric.compress(1 - self._mask, iota)
@@ -1265,17 +1266,17 @@ array(data = %(data)s,
def putmask (self, values):
"""Set the masked entries of self to filled(values).
- Mask changed to None.
+ Mask changed to nomask.
"""
d = self._data
- if self._mask is not None:
+ if self._mask is not nomask:
d[self._mask] = filled(values).astype(d.dtype)
self._shared_mask = 0
- self._mask = None
+ self._mask = nomask
def ravel (self):
"""Return a 1-D view of self."""
- if self._mask is None:
+ if self._mask is nomask:
return masked_array(self._data.ravel())
else:
return masked_array(self._data.ravel(), self._mask.ravel())
@@ -1294,12 +1295,12 @@ array(data = %(data)s,
"""
return self._mask
mask = property(fget=raw_mask,
- doc="The mask, may be None. Values where mask true are meaningless.")
+ doc="The mask, may be nomask. Values where mask true are meaningless.")
def reshape (self, *s):
"""This array reshaped to shape s"""
d = self._data.reshape(*s)
- if self._mask is None:
+ if self._mask is nomask:
return masked_array(d)
else:
m = self._mask.reshape(*s)
@@ -1326,7 +1327,7 @@ array(data = %(data)s,
def item(self):
"Return Python scalar if possible."
- if self._mask is not None:
+ if self._mask is not nomask:
m = oldnumeric.ravel(self._mask)
try:
if m[0]:
@@ -1344,11 +1345,11 @@ array(data = %(data)s,
return self.filled(fill_value).tostring()
def unmask (self):
- "Replace the mask by None if possible."
- if self._mask is None: return
+ "Replace the mask by nomask if possible."
+ if self._mask is nomask: return
m = make_mask(self._mask, flag=1)
- if m is None:
- self._mask = None
+ if m is nomask:
+ self._mask = nomask
self._shared_mask = 0
def unshare_mask (self):
@@ -1405,7 +1406,7 @@ def allequal (a, b, fill_value=1):
fill_value as a truth value where either or both are masked.
"""
m = mask_or(getmask(a), getmask(b))
- if m is None:
+ if m is nomask:
x = filled(a)
y = filled(b)
d = umath.equal(x, y)
@@ -1422,7 +1423,7 @@ def allequal (a, b, fill_value=1):
def masked_values (data, value, rtol=1.e-5, atol=1.e-8, copy=1):
"""
masked_values(data, value, rtol=1.e-5, atol=1.e-8)
- Create a masked array; mask is None if possible.
+ Create a masked array; mask is nomask if possible.
If copy==0, and otherwise possible, result
may share data values with original array.
Let d = filled(data, value). Returns d
@@ -1461,7 +1462,7 @@ def fromstring (s, t):
def left_shift (a, n):
"Left shift n bits"
m = getmask(a)
- if m is None:
+ if m is nomask:
d = umath.left_shift(filled(a), n)
return masked_array(d)
else:
@@ -1471,7 +1472,7 @@ def left_shift (a, n):
def right_shift (a, n):
"Right shift n bits"
m = getmask(a)
- if m is None:
+ if m is nomask:
d = umath.right_shift(filled(a), n)
return masked_array(d)
else:
@@ -1482,7 +1483,7 @@ def resize (a, new_shape):
"""resize(a, new_shape) returns a new array with the specified shape.
The original array's total size can be any size."""
m = getmask(a)
- if m is not None:
+ if m is not nomask:
m = oldnumeric.resize(m, new_shape)
result = array(oldnumeric.resize(filled(a), new_shape), mask=m)
result.set_fill_value(get_fill_value(a))
@@ -1498,7 +1499,7 @@ def repeat(a, repeats, axis=0):
repeats = tuple([repeats]*(shape(af)[axis]))
m = getmask(a)
- if m is not None:
+ if m is not nomask:
m = oldnumeric.repeat(m, repeats, axis)
d = oldnumeric.repeat(af, repeats, axis)
result = masked_array(d, m)
@@ -1545,14 +1546,14 @@ def power (a, b, third=None):
return masked_array(umath.power(fa, fb), m)
md = make_mask(umath.less_equal (fa, 0), flag=1)
m = mask_or(m, md)
- if m is None:
+ if m is nomask:
return masked_array(umath.power(fa, fb))
else:
fa = numeric.where(m, 1, fa)
return masked_array(umath.power(fa, fb), m)
-def masked_array (a, mask=None, fill_value=None):
- """masked_array(a, mask=None) =
+def masked_array (a, mask=nomask, fill_value=None):
+ """masked_array(a, mask=nomask) =
array(a, mask=mask, copy=0, fill_value=fill_value)
"""
return array(a, mask=mask, copy=0, fill_value=fill_value)
@@ -1581,7 +1582,7 @@ def average (a, axis=0, weights=None, returned = 0):
if ash == ():
ash = (1,)
if axis is None:
- if mask is None:
+ if mask is nomask:
if weights is None:
n = add.reduce(a.raw_data().ravel())
d = reduce(lambda x, y: x * y, ash, 1.0)
@@ -1602,7 +1603,7 @@ def average (a, axis=0, weights=None, returned = 0):
d = add.reduce(w)
del w
else:
- if mask is None:
+ if mask is nomask:
if weights is None:
d = ash[axis] * 1.0
n = umath.add.reduce(a.raw_data(), axis)
@@ -1683,14 +1684,14 @@ def where (condition, x, y):
else:
xv = filled(x)
xm = getmask(x)
- if xm is None: xm = 0
+ if xm is nomask: xm = 0
if y is masked:
yv = 0
ym = 1
else:
yv = filled(y)
ym = getmask(y)
- if ym is None: ym = 0
+ if ym is nomask: ym = 0
d = numeric.choose(fc, (yv, xv))
md = numeric.choose(fc, (ym, xm))
m = getmask(condition)
@@ -1705,7 +1706,7 @@ def choose (indices, t):
def nmask (x):
if x is masked: return 1
m = getmask(x)
- if m is None: return 0
+ if m is nomask: return 0
return m
c = filled(indices,0)
masks = [nmask(x) for x in t]
@@ -1785,7 +1786,7 @@ def reshape (a, *newshape):
"Copy of a with a new shape."
m = getmask(a)
d = filled(a).reshape(*newshape)
- if m is None:
+ if m is nomask:
return masked_array(d)
else:
return masked_array(d, mask=numeric.reshape(m, *newshape))
@@ -1794,7 +1795,7 @@ def ravel (a):
"a as one-dimensional, may share data and mask"
m = getmask(a)
d = oldnumeric.ravel(filled(a))
- if m is None:
+ if m is nomask:
return masked_array(d)
else:
return masked_array(d, mask=numeric.ravel(m))
@@ -1806,7 +1807,7 @@ def concatenate (arrays, axis=0):
d.append(filled(x))
d = numeric.concatenate(d, axis)
for x in arrays:
- if getmask(x) is not None: break
+ if getmask(x) is not nomask: break
else:
return masked_array(d)
dm = []
@@ -1819,7 +1820,7 @@ def take (a, indices, axis=0):
"take(a, indices, axis=0) returns selection of items from a."
m = getmask(a)
d = masked_array(a).raw_data()
- if m is None:
+ if m is nomask:
return masked_array(numeric.take(d, indices, axis))
else:
return masked_array(numeric.take(d, indices, axis),
@@ -1829,7 +1830,7 @@ def transpose(a, axes=None):
"transpose(a, axes=None) reorder dimensions per tuple axes"
m = getmask(a)
d = filled(a)
- if m is None:
+ if m is nomask:
return masked_array(numeric.transpose(d, axes))
else:
return masked_array(numeric.transpose(d, axes),
@@ -1847,17 +1848,17 @@ def put(a, indices, values):
v = filled(values)
numeric.put (d, ind, v)
m = getmask(a)
- if m is not None:
+ if m is not nomask:
a.unshare_mask()
numeric.put(a.raw_mask(), ind, 0)
def putmask(a, mask, values):
"putmask(a, mask, values) sets a where mask is true."
- if mask is None:
+ if mask is nomask:
return
numeric.putmask(a.raw_data(), mask, values)
m = getmask(a)
- if m is None: return
+ if m is nomask: return
a.unshare_mask()
numeric.putmask(a.raw_mask(), mask, 0)
@@ -1880,7 +1881,7 @@ def outerproduct(a, b):
d = numeric.outerproduct(fa, fb)
ma = getmask(a)
mb = getmask(b)
- if ma is None and mb is None:
+ if ma is nomask and mb is nomask:
return masked_array(d)
ma = getmaskarray(a)
mb = getmaskarray(b)
@@ -1900,7 +1901,7 @@ def compress(condition, x, dimension=-1):
"""
c = filled(condition, 0)
m = getmask(x)
- if m is not None:
+ if m is not nomask:
m=numeric.compress(c, m, dimension)
d = numeric.compress(c, filled(x), dimension)
return masked_array(d, m)
@@ -1917,7 +1918,7 @@ class _minimum_operation:
"Execute the call behavior."
if b is None:
m = getmask(a)
- if m is None:
+ if m is nomask:
d = amin(filled(a).ravel())
return d
ac = a.compressed()
@@ -1931,7 +1932,7 @@ class _minimum_operation:
def reduce (self, target, axis=0):
"""Reduce target along the given axis."""
m = getmask(target)
- if m is None:
+ if m is nomask:
t = filled(target)
return masked_array (umath.minimum.reduce (t, axis))
else:
@@ -1943,8 +1944,8 @@ class _minimum_operation:
"Return the function applied to the outer product of a and b."
ma = getmask(a)
mb = getmask(b)
- if ma is None and mb is None:
- m = None
+ if ma is nomask and mb is nomask:
+ m = nomask
else:
ma = getmaskarray(a)
mb = getmaskarray(b)
@@ -1966,7 +1967,7 @@ class _maximum_operation:
"Execute the call behavior."
if b is None:
m = getmask(a)
- if m is None:
+ if m is nomask:
d = amax(filled(a).ravel())
return d
ac = a.compressed()
@@ -1980,7 +1981,7 @@ class _maximum_operation:
def reduce (self, target, axis=0):
"""Reduce target along the given axis."""
m = getmask(target)
- if m is None:
+ if m is nomask:
t = filled(target)
return masked_array (umath.maximum.reduce (t, axis))
else:
@@ -1992,8 +1993,8 @@ class _maximum_operation:
"Return the function applied to the outer product of a and b."
ma = getmask(a)
mb = getmask(b)
- if ma is None and mb is None:
- m = None
+ if ma is nomask and mb is nomask:
+ m = nomask
else:
ma = getmaskarray(a)
mb = getmaskarray(b)
@@ -2018,7 +2019,7 @@ def sort (x, axis = -1, fill_value=None):
fill_value = default_fill_value (x)
d = filled(x, fill_value)
s = oldnumeric.sort(d, axis)
- if getmask(x) is None:
+ if getmask(x) is nomask:
return masked_array(s)
return masked_values(s, fill_value, copy=0)
@@ -2026,7 +2027,7 @@ def diagonal(a, k = 0, axis1=0, axis2=1):
"""diagonal(a,k=0,axis1=0, axis2=1) = the k'th diagonal of a"""
d = oldnumeric.diagonal(filled(a), k, axis1, axis2)
m = getmask(a)
- if m is None:
+ if m is nomask:
return masked_array(d, m)
else:
return masked_array(d, oldnumeric.diagonal(m, k, axis1, axis2))