diff options
author | pierregm <pierregm@localhost> | 2008-04-23 14:46:29 +0000 |
---|---|---|
committer | pierregm <pierregm@localhost> | 2008-04-23 14:46:29 +0000 |
commit | 1da799e3541679475c63026dbe82f9840d33188b (patch) | |
tree | 51477aa55f1b0a22994e0f6e1e8ebe1536ab692d /numpy/ma | |
parent | 1e3d6e6af36dad10ff4e59d425babc8f6568c9d7 (diff) | |
download | numpy-1da799e3541679475c63026dbe82f9840d33188b.tar.gz |
__float__ : raises a TypeError exception for arrays longer than 1
__int__ : raises a TypeError exception for arrays longer than 1
Diffstat (limited to 'numpy/ma')
-rw-r--r-- | numpy/ma/core.py | 11 | ||||
-rw-r--r-- | numpy/ma/tests/test_core.py | 15 | ||||
-rw-r--r-- | numpy/ma/tests/test_old_ma.py | 2 |
3 files changed, 19 insertions, 9 deletions
diff --git a/numpy/ma/core.py b/numpy/ma/core.py index fa1906939..f6965171c 100644 --- a/numpy/ma/core.py +++ b/numpy/ma/core.py @@ -1740,14 +1740,20 @@ masked_%(name)s(data = %(data)s, #............................................ def __float__(self): "Convert to float." - if self._mask is not nomask: + if self.size > 1: + raise TypeError,\ + "Only length-1 arrays can be converted to Python scalars" + elif self._mask: warnings.warn("Warning: converting a masked element to nan.") return numpy.nan return float(self.item()) def __int__(self): "Convert to int." - if self._mask is not nomask: + if self.size > 1: + raise TypeError,\ + "Only length-1 arrays can be converted to Python scalars" + elif self._mask: raise MAError, 'Cannot convert masked element to a Python int.' return int(self.item()) #............................................ @@ -3366,3 +3372,4 @@ identity = _convert2ma('identity') indices = numpy.indices ############################################################################### +
\ No newline at end of file diff --git a/numpy/ma/tests/test_core.py b/numpy/ma/tests/test_core.py index 520730191..041ea0fe1 100644 --- a/numpy/ma/tests/test_core.py +++ b/numpy/ma/tests/test_core.py @@ -702,16 +702,19 @@ class TestMA(NumpyTestCase): assert_equal(1.0, float(array(1))) assert_equal(1, int(array([[[1]]]))) assert_equal(1.0, float(array([[1]]))) - self.failUnlessRaises(ValueError, float, array([1,1])) + self.assertRaises(TypeError, float, array([1,1])) warnings.simplefilter('ignore',UserWarning) assert numpy.isnan(float(array([1],mask=[1]))) warnings.simplefilter('default',UserWarning) -#TODO: Check how bool works... -#TODO: self.failUnless(bool(array([0,1]))) -#TODO: self.failUnless(bool(array([0,0],mask=[0,1]))) -#TODO: self.failIf(bool(array([0,0]))) -#TODO: self.failIf(bool(array([0,0],mask=[0,0]))) + # + a = array([1,2,3],mask=[1,0,0]) + self.assertRaises(TypeError, lambda:float(a)) + assert_equal(float(a[-1]), 3.) + assert(numpy.isnan(float(a[0]))) + self.assertRaises(TypeError, int, a) + assert_equal(int(a[-1]), 3) + self.assertRaises(MAError, lambda:int(a[0])) #........................ def test_arraymethods(self): "Tests some MaskedArray methods." diff --git a/numpy/ma/tests/test_old_ma.py b/numpy/ma/tests/test_old_ma.py index 74fd9d4bf..6680eedaf 100644 --- a/numpy/ma/tests/test_old_ma.py +++ b/numpy/ma/tests/test_old_ma.py @@ -577,7 +577,7 @@ class TestMa(NumpyTestCase): self.assertEqual(1.0, float(array(1))) self.assertEqual(1, int(array([[[1]]]))) self.assertEqual(1.0, float(array([[1]]))) - self.failUnlessRaises(ValueError, float, array([1,1])) + self.failUnlessRaises(TypeError, float, array([1,1])) self.failUnlessRaises(ValueError, bool, array([0,1])) self.failUnlessRaises(ValueError, bool, array([0,0],mask=[0,1])) |