2014-09-22 110 views
11

我願做用Cython C-數組初始化

cdef int mom2calc[3] 
mom2calc[0] = 1 
mom2calc[1] = 2 
mom2calc[2] = 3 

在更緊湊的方式。類似於

cdef int mom2calc[3] = [1, 2, 3] 

這是一種無效的Cython語法。

注:

cdef int* mom2calc = [1, 2, 3] 

不是一種選擇,因爲我不能(自動地)它轉換爲一個存儲器圖。

回答

16
cdef int mom2calc[3] 
mom2calc[:] = [1, 2, 3] 

這適用於原始指針(雖然它不是檢查界限),內存視圖和固定大小的數組。它只能在一個維度,但是這往往不夠:

cdef int mom2calc[3][3] 
mom2calc[0][:] = [1, 2, 3] 
mom2calc[1][:] = [4, 5, 6] 
mom2calc[2][:] = [7, 8, 9] 
+0

我有一個[用Cython後(http://stackoverflow.com/questions/41944883/verifying-compatibility-in-compiling-extension-types-並且使用他們與cdef)你可能能夠提供洞察力。 – Phillip 2017-01-31 20:48:47