Создание массива Cython с нулевой длиной - PullRequest
0 голосов
/ 28 октября 2018

Я хотел бы создать массив нулевой длины в Cython:

from cython.view cimport array as cvarray

arr = cvarray(shape=(0,), itemsize=sizeof(int), format="i")

Однако я получаю эту ошибку:

ValueError: Invalid shape in axis 0: 0.

Есть ли причина, по которой я не могу создатьмассив нулевой длины?Numpy допускает массивы нулевой длины, но я стараюсь избегать этого, поскольку я хочу использовать только функции C в своем коде.


В ответ на вопрос hpaulj;Вот пример использования, где он мне нужен.В примере происходит сбой, когда входной массив arr имеет длину 1. Я бы предпочел вернуть пустой массив вместо объекта None.Как я хотел бы, чтобы возвращаемый тип был согласованным.

from cython.view cimport array as cvarray

cpdef delete(int[:] arr, int obj):
    cdef:
        int[:] result
        int j, i

    result = cvarray(shape=(len(arr)-1,), itemsize=sizeof(int), format="i")
    j = 0
    for i in range(result.shape[0]):
        if i==obj:
            j+=1
        result[i] = arr[j]
        j+=1
    return result
...