Changeset 1864

Show
Ignore:
Timestamp:
01/10/06 10:07:32 (3 years ago)
Author:
sasha
Message:

allow x... and x[()] for zero rank ndarray x

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/numpy/core/src/arrayobject.c

    r1856 r1864  
    17971797        } 
    17981798        if (self->nd == 0) { 
     1799                if (op == Py_Ellipsis || 
     1800                    PyTuple_Check(op) && 0 == PyTuple_GET_SIZE(op)) 
     1801                        return PyArray_ToScalar(self->data, self); 
    17991802                PyErr_SetString(PyExc_IndexError,  
    18001803                                "0-d arrays can't be indexed."); 
  • trunk/numpy/core/tests/test_multiarray.py

    r1847 r1864  
    7070        assert_equal(d2, dtypedescr(float64)) 
    7171         
     72class test_zero_rank(ScipyTestCase): 
     73    def setUp(self): 
     74        self.d = array(0), array('x', object) 
    7275         
    73      
     76    def check_ellipsis_subscript(self): 
     77        a,b = self.d 
     78 
     79        self.failUnlessEqual(a[...], 0) 
     80        self.failUnlessEqual(b[...].item(), 'x') 
     81        self.failUnless(type(a[...]) is a.dtype) 
     82        self.failUnless(type(b[...]) is b.dtype) 
     83         
     84    def check_empty_subscript(self): 
     85        a,b = self.d 
     86 
     87        self.failUnlessEqual(a[()], 0) 
     88        self.failUnlessEqual(b[()].item(), 'x') 
     89        self.failUnless(type(a[()]) is a.dtype) 
     90        self.failUnless(type(b[()]) is b.dtype) 
     91 
     92    def check_invalid_subscript(self): 
     93        a,b = self.d 
     94        self.failUnlessRaises(IndexError, lambda x: x[0], a) 
     95        self.failUnlessRaises(IndexError, lambda x: x[0], b) 
     96        self.failUnlessRaises(IndexError, lambda x: x[array([], int)], a) 
     97        self.failUnlessRaises(IndexError, lambda x: x[array([], int)], b) 
     98 
     99if __name__ == "__main__": 
     100        ScipyTest('numpy.core.multiarray').run()