2012-11-06 40 views
6

與numpy的陣列處理時,我使用成語用Cython numpy的陣列形狀,元組分配

size_x, size_y, size_z = some_array.shape 

經常。當相關數組有一個類型時,在Cython中似乎也沒有這種效果。

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

我們最終像

Cannot convert 'npy_intp *' to Python object 

編譯錯誤是可能的事實,即「形狀」被轉換至C數組(用於更快的訪問)的結果,所以它不再一個元組。

即使在Cython中,是否有可能以某種方式提取這個元組? (或者我應該只是sx, sy = arr.shape[0], arr.shape[1]堅持?)

回答

4

我相信你是正確的,要對付這種直接的方式是一樣的東西:

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

我不知道的另一種方式來做到這一點,這是我在自己的代碼中使用的慣例。