Changeset 1866

Show
Ignore:
Timestamp:
01/10/06 18:17:47 (3 years ago)
Author:
sasha
Message:

implemented a... = v and a[()] = v for zero rank a

Files:

Legend:

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

    r1864 r1866  
    19391939 
    19401940        if (self->nd == 0) { 
     1941                if (index == Py_Ellipsis || 
     1942                    PyTuple_Check(index) && 0 == PyTuple_GET_SIZE(index)) 
     1943                        return self->descr->f->setitem(op, self->data, self); 
    19411944                PyErr_SetString(PyExc_IndexError,  
    19421945                                "0-d arrays can't be indexed."); 
  • trunk/numpy/core/tests/test_multiarray.py

    r1864 r1866  
    9797        self.failUnlessRaises(IndexError, lambda x: x[array([], int)], b) 
    9898 
     99    def check_ellipsis_subscript_assignment(self): 
     100        a,b = self.d 
     101 
     102        a[...] = 42 
     103        self.failUnlessEqual(a, 42) 
     104        b[...] = '' 
     105        self.failUnlessEqual(b.item(), '') 
     106         
     107    def check_empty_subscript_assignment(self): 
     108        a,b = self.d 
     109 
     110        a[()] = 42 
     111        self.failUnlessEqual(a, 42) 
     112        b[()] = '' 
     113        self.failUnlessEqual(b.item(), '') 
     114 
     115    def check_invalid_subscript_assignment(self): 
     116        a,b = self.d 
     117        def assign(x, i, v): 
     118            x[i] = v 
     119        self.failUnlessRaises(IndexError, assign, a, 0, 42) 
     120        self.failUnlessRaises(IndexError, assign, b, 0, '') 
     121        self.failUnlessRaises(TypeError, assign, a, (), '') 
     122 
     123     
     124 
    99125if __name__ == "__main__": 
    100126        ScipyTest('numpy.core.multiarray').run()