Interface typed memoryviews with python slice object

169 views Asked by At

I want to convert a __getitem__ method from python to accept arrays from cython. I should allow slicing in the second index in this particular application. For python I could write:

class name:
    def __init__(self):
        self.numbers = np.random.rand(2,3) 

    # ...
    # ...

    def __getitem__(self, tup):
        if type(tup) == tuple:
            x, y = tup
            return self.numbers[x][y]
        return self.numbers[tup]

and everything would work great. However, the interpreter doesn't like it when I declare the variable numbers to be the type cdef public double[:,:] numbers and try to call the __getitem__-method with y being a slice-object. Whenever that happens it complains TypeError: 'slice' object cannot be interpreted as an integer. My question is then: How would I modify the line return self.bounds[x][y] such that y is correctly understood in case it's a slice instead of an integer?

0

There are 0 answers