1
こんにちは私は計算のスピードを上げるために、pythonコードをcythonに変換しようとしています。私はcdef
からcpdef
にcythonコード内の複数の配列を返そうとしています。古典的なCに基づいて、ポインタまたはタプルのどちらかを使用できます。サイズが変わるのでタプルを使うことにしました。私は、次のコードがうまくいかないことを知っています。ありがとうございました!Cythonはcdef内でタプルを返しますか?
import numpy as np
cimport numpy as np
cdef tuple funA(double[:] X, double[:] Y):
cdef int nX, nY, i
nX = len(X)
nY = len(Y)
for i in range(nX):
X[i] = X[i]*X[i]
for i in range(nY):
Y[i] = Y[i]*Y[i]
return X,Y
cpdef Run(double[:] X, double[:] Y)
cdef Tuple1, Tuple2 = funA(X,Y)
# Do some calculation with Tuple1 and Tuple2
# Example
cdef int i, nTuple1, nTuple2
nTuple1 = len(Tuple1)
for i in range(nTuple1):
Tuple1[i] = Tuple1[i]**2
nTuple2 = len(Tuple2)
for i in range(nTuple2):
Tuple2[i] = Tuple2[i]/2
return Tuple1, Tuple2
私が提案したようにcdefが削除され、「識別子またはリテラルが必要です」というメッセージが表示されます。あなたは私に例を提供することができますどこcpdefで2つの配列を返す関数funAを呼び出しますか?ありがとうございました! – user4627923
これは前の行にコロンがないためだと思います。 – DavidW
うわー、私は今や馬鹿のように見える。ハハはおかげで仲間になる:-) – user4627923