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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage