Cython C-array初始化

时间:2014-09-22 13:09:28

标签: cython

我想做

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]

不是一个选项,因为我无法(自动)将其转换为内存视图。

2 个答案:

答案 0 :(得分:27)

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]

答案 1 :(得分:1)

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

这是应该做的。 Cython测试中C数组初始化的示例例如here