summaryrefslogtreecommitdiff
path: root/numpy/ma
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/ma')
-rw-r--r--numpy/ma/core.py41
-rw-r--r--numpy/ma/tests/test_core.py15
-rw-r--r--numpy/ma/tests/test_regression.py4
-rw-r--r--numpy/ma/tests/test_subclassing.py2
4 files changed, 42 insertions, 20 deletions
diff --git a/numpy/ma/core.py b/numpy/ma/core.py
index e24cb956c..41af5cc70 100644
--- a/numpy/ma/core.py
+++ b/numpy/ma/core.py
@@ -2699,8 +2699,6 @@ class MaskedIterator:
return masked
return d
- next = __next__
-
class MaskedArray(ndarray):
"""
@@ -4327,17 +4325,6 @@ class MaskedArray(ndarray):
raise MaskError('Cannot convert masked element to a Python int.')
return int(self.item())
- def __long__(self):
- """
- Convert to long.
- """
- if self.size > 1:
- raise TypeError("Only length-1 arrays can be converted "
- "to Python scalars")
- elif self._mask:
- raise MaskError('Cannot convert masked element to a Python long.')
- return long(self.item())
-
@property
def imag(self):
"""
@@ -5954,10 +5941,17 @@ class MaskedArray(ndarray):
return result.tolist()
def tostring(self, fill_value=None, order='C'):
+ r"""
+ A compatibility alias for `tobytes`, with exactly the same behavior.
+
+ Despite its name, it returns `bytes` not `str`\ s.
+
+ .. deprecated:: 1.19.0
"""
- This function is a compatibility alias for tobytes. Despite its name it
- returns bytes not strings.
- """
+ # 2020-03-30, Numpy 1.19.0
+ warnings.warn(
+ "tostring() is deprecated. Use tobytes() instead.",
+ DeprecationWarning, stacklevel=2)
return self.tobytes(fill_value, order=order)
@@ -6385,6 +6379,21 @@ class MaskedConstant(MaskedArray):
# it's a subclass, or something is wrong, make it obvious
return object.__repr__(self)
+ def __format__(self, format_spec):
+ # Replace ndarray.__format__ with the default, which supports no format characters.
+ # Supporting format characters is unwise here, because we do not know what type
+ # the user was expecting - better to not guess.
+ try:
+ return object.__format__(self, format_spec)
+ except TypeError:
+ # 2020-03-23, NumPy 1.19.0
+ warnings.warn(
+ "Format strings passed to MaskedConstant are ignored, but in future may "
+ "error or produce different behavior",
+ FutureWarning, stacklevel=2
+ )
+ return object.__format__(self, "")
+
def __reduce__(self):
"""Override of MaskedArray's __reduce__.
"""
diff --git a/numpy/ma/tests/test_core.py b/numpy/ma/tests/test_core.py
index 3bfb42555..98fc7dd97 100644
--- a/numpy/ma/tests/test_core.py
+++ b/numpy/ma/tests/test_core.py
@@ -447,6 +447,21 @@ class TestMaskedArray:
assert_equal(copied.mask, [0, 0, 0])
assert_equal(a.mask, [0, 1, 0])
+ def test_format(self):
+ a = array([0, 1, 2], mask=[False, True, False])
+ assert_equal(format(a), "[0 -- 2]")
+ assert_equal(format(masked), "--")
+ assert_equal(format(masked, ""), "--")
+
+ # Postponed from PR #15410, perhaps address in the future.
+ # assert_equal(format(masked, " >5"), " --")
+ # assert_equal(format(masked, " <5"), "-- ")
+
+ # Expect a FutureWarning for using format_spec with MaskedElement
+ with assert_warns(FutureWarning):
+ with_format_string = format(masked, " >5")
+ assert_equal(with_format_string, "--")
+
def test_str_repr(self):
a = array([0, 1, 2], mask=[False, True, False])
assert_equal(str(a), '[0 -- 2]')
diff --git a/numpy/ma/tests/test_regression.py b/numpy/ma/tests/test_regression.py
index 9f3368489..7e76eb054 100644
--- a/numpy/ma/tests/test_regression.py
+++ b/numpy/ma/tests/test_regression.py
@@ -86,6 +86,6 @@ class TestRegression:
ma = np.ma.MaskedArray([(1, 1.), (2, 2.), (3, 3.)], dtype='i4,f4')
assert_array_equal(ma[[]], ma[:0])
- def test_masked_array_tostring_fortran(self):
+ def test_masked_array_tobytes_fortran(self):
ma = np.ma.arange(4).reshape((2,2))
- assert_array_equal(ma.tostring(order='F'), ma.T.tostring())
+ assert_array_equal(ma.tobytes(order='F'), ma.T.tobytes())
diff --git a/numpy/ma/tests/test_subclassing.py b/numpy/ma/tests/test_subclassing.py
index 02aeebd17..caa746740 100644
--- a/numpy/ma/tests/test_subclassing.py
+++ b/numpy/ma/tests/test_subclassing.py
@@ -105,8 +105,6 @@ class CSAIterator:
def __next__(self):
return next(self._dataiter).__array__().view(type(self._original))
- next = __next__
-
class ComplicatedSubArray(SubArray):