summaryrefslogtreecommitdiff
path: root/numpy/ma
diff options
context:
space:
mode:
authorpierregm <pierregm@localhost>2008-04-23 14:46:29 +0000
committerpierregm <pierregm@localhost>2008-04-23 14:46:29 +0000
commit1da799e3541679475c63026dbe82f9840d33188b (patch)
tree51477aa55f1b0a22994e0f6e1e8ebe1536ab692d /numpy/ma
parent1e3d6e6af36dad10ff4e59d425babc8f6568c9d7 (diff)
downloadnumpy-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.py11
-rw-r--r--numpy/ma/tests/test_core.py15
-rw-r--r--numpy/ma/tests/test_old_ma.py2
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]))