1
안녕하세요, 저는 계산 속도를 높이기 위해 파이썬 코드를 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