如何在cython中创建对象和对象数组

时间:2019-08-03 18:30:13

标签: python cython

我在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循环存在问题,但我不知道可能是什么。

0 个答案:

没有答案