2012-11-06 3 views
6

uso il linguaggioCython forma matrice NumPy, assegnazioni tupla

size_x, size_y, size_z = some_array.shape 

abbastanza spesso nel caso di matrici numpy. La stessa cosa non sembra funzionare in Cython quando la matrice in questione ha un tipo, ad es.

def someFunc(np.ndarray[np.float32_t, ndim=2] arr): 
     sx, sy = arr.shape 

concludiamo ad un errore di compilazione come

Cannot convert 'npy_intp *' to Python object 

che è probabilmente il risultato del fatto che "forma" viene convertito in una matrice C (per l'accesso rapido), in modo che non sia più una tupla.

È possibile estrarre questa tupla in qualche modo anche in Cython? (O devo solo restare con sx, sy = arr.shape[0], arr.shape[1]?)

risposta

4

Credo che lei ha ragione che il modo dritto in avanti per affrontare questo è qualcosa come:

cdef int sx, sy 
sx = arr.shape[0] 
sy = arr.shape[1] 

io non sono a conoscenza di un altro modo per fare questo e questa è la convenzione che uso nel mio codice.