Cython: Sind typisierte Speicheransichten die moderne Art, numpy Arrays einzugeben?
Angenommen, ich möchte ein numpy-Array an ein @ übergebecdef
Funktion:
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
Ist dies die moderne Art, numpy Arrays einzugeben? Vergleichen Sie mit dieser Frage:cython / numpy Typ eines Arrays
Was passiert, wenn ich Folgendes tun möchte:
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
Dies wird einen Fehler zurückgeben, weil-
ist nicht für Speicheransichten definiert. Sollte dieser Fall also wie folgt behandelt worden sein?
cdef double[:] mydifference(int a, int b):
arr_a = np.arange(a)
arr_b = np.arange(b)
return arr_a - arr_b