Скажем, я хотел бы передать массив numpy в функцию cdef
:
cdef double mysum(double[:] arr):
cdef int n = len(arr)
cdef double result = 0
for i in range(n):
result = result + arr[i]
return result
Это современный способ обработки набора массивов numpy? Сравните с этим вопросом: тип cython/numpy массива
Что делать, если я хочу сделать следующее:
cdef double[:] mydifference(int a, int b):
cdef double[:] arr_a = np.arange(a)
cdef double[:] arr_b = np.arange(b)
return arr_a - arr_b
Это вернет ошибку, потому что -
не определен для памяти. Итак, должен ли этот случай быть обработан следующим образом?
cdef double[:] mydifference(int a, int b):
arr_a = np.arange(a)
arr_b = np.arange(b)
return arr_a - arr_b