Я хотел бы создать массив нулевой длины в 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