Типизированные виды памяти в интерфейсе со срезом python - PullRequest
0 голосов
/ 04 мая 2020

Я хочу преобразовать метод __getitem__ из python, чтобы принимать массивы из Cython. Я должен разрешить нарезку во втором индексе в этом конкретном приложении. Для python я мог бы написать:

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]

, и все будет отлично работать. Однако интерпретатору не нравится, когда я объявляю переменную numbers типа cdef public double[:,:] numbers и пытаюсь вызвать __getitem__ -метод с y как slice -объект. Всякий раз, когда это происходит, он жалуется TypeError: объект 'slice' не может быть интерпретирован как целое число . Мой вопрос тогда: как бы я изменил строку return self.bounds[x][y] так, чтобы y был правильно понят, если это slice вместо целого числа?

...