创建一个长度为零的cython数组

时间:2018-10-27 22:15:14

标签: python cython

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

0 个答案:

没有答案