我想在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