我在python3环境中使用cython。我正在尝试创建一个名为“ Particle”的新类对象以及该类对象的数组。
以下函数应返回“ Particle”类型的一维数组
cdef Particle [:] Initiate(self):
cdef float L=self.L
cdef int N=self.N
cdef int dim=self.dim
cdef float[:,:] r,v
cdef int i
r=np.random.rand(N,dim)*L
v=np.zeros([N,dim])
cdef Particle[:] particles
particles=new Particle[N]
for i in range(N):
particles[i]=Particle(v,r)
return particles
“ Particle”类的定义如下:
cdef class Particle:
cdef float [:] v,r,rm,rp,F
def _cinit_(self,float [:] v,float [:] r):
self.v=v
self.r=r
self.rm=r.copy()
self.changed=0
我收到以下错误:
> Error compiling Cython file:
> ------------------------------------------------------------ ...
> cdef int i
> r=np.random.rand(N,dim)*L
> v=np.zeros([N,dim])
> cdef Particle[:] particles
> particles=new Particle[N]
> for i in range(N):
> ^
> ------------------------------------------------------------
>
> /home/oran/.cache/ipython/cython/_cython_magic_2f73f7a81046879a8c40e3c66cc03ae6.pyx:76:8:
> Expected an identifier or literal
似乎for循环存在问题,但我不知道可能是什么。