web-dev-qa-db-ja.com

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]

(自動的に)メモリビューに変換できないため、これはオプションではありません。

20
Danilo Horta
cdef int mom2calc[3]
mom2calc[:] = [1, 2, 3]

これは、生のポインタ(境界はチェックされませんが)、メモリビュー、固定サイズの配列で機能します。それは1次元でのみ機能しますが、それで十分なことがよくあります。

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

これは、それを行う方法です。 CythonテストでのCアレイの初期化の例は、 ここ

1
kirr